web-dev-qa-db-fra.com

Joomla Modal Field Redirect

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&amp;task=file.upload&amp;tmpl=component&amp;<?php echo $this->session->getName() . '=' . $this->session->getId(); ?>&amp;<?php echo JSession::getFormToken();?>=1&amp;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&amp;view=file&amp;layout=modal&amp;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

3

Le problème s'est avéré être quelque chose d'aussi simple que &amp;, Simple changement:

<input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_file_manager&amp;view=file&amp;layout=modal&amp;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.

3

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.

1
Dmitry Rekun