J'ai créé un champ de téléchargement pour le contenu dans le répertoire images et tout fonctionne parfaitement, sauf la redirection après le téléchargement.
Voici le formulaire de téléchargement dans la fenêtre modale:
<form action="<?php echo JUri::base(); ?>index.php?option=com_file_manager&task=file.upload&tmpl=component&<?php echo $this->session->getName() . '=' . $this->session->getId(); ?>&<?php echo JSession::getFormToken();?>=1&view=file" id="uploadForm" class="form-horizontal" name="uploadForm" method="post" enctype="multipart/form-data">
<div id="uploadform" class="well">
<fieldset id="upload-noflash" class="actions">
<div class="control-group">
<div class="control-label">
<label for="upload-file" class="control-label"><?php echo JText::_('COM_MEDIA_UPLOAD_FILE'); ?></label>
</div>
<div class="controls">
<input type="file" id="upload-file" name="Filedata[]" multiple /><button class="btn btn-primary" id="upload-submit"><i class="icon-upload icon-white"></i> <?php echo JText::_('COM_MEDIA_START_UPLOAD'); ?></button>
</div>
</div>
</fieldset>
<input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_fal_manager&view=file&layout=modal&tmpl=component'); ?>" />
</div>
</form>
Et voici à quoi ressemble la redirection dans le contrôleur:
public function upload() {
// Check for request forgeries
JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN'));
$files = $this->input->files->get('Filedata', '', 'array');
$return = $this->input->post->get('return-url', null, 'base64');
$this->folder = $this->input->get('folder', '', 'path');
if ($return) {
$this->setRedirect(base64_decode($return));
}
}
J'en ai juste besoin pour me ramener à l'endroit où j'étais avant de le télécharger, l'URL du modal est la suivante:
index.php?option=com_file_manager&view=videofile&layout=modal&tmpl=component&function=jSelectVideofile_jform_video
et après le téléchargement:
index.php?option=com_file_manager&view=videofile&layout=modal&tmpl=component&function=jSelectVideofile_jform_video
Bizarre, je sais, c’est la même url, mais ce n’est pas la même page. Elle m’affiche dans la liste.
Toute aide grandement appréciée
Le problème s'est avéré être quelque chose d'aussi simple que &
, Simple changement:
<input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_file_manager&view=file&layout=modal&tmpl=component'); ?>" />
à:
<input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_file_manager&view=file&layout=modal&tmpl=component'); ?>" />
A fait le tour. Merci à tous pour vos commentaires.
Tu as view=files
dans votre return-url
entrée masquée du formulaire. Ensuite, dans le contrôleur, vous l'attribuez à $return
var et redirige l’utiliser. C'est pourquoi vous êtes redirigé vers la vue liste.