web-dev-qa-db-ja.com

Joomlaモーダルフィールドリダイレクト

コンテンツをimagesディレクトリにアップロードするためのアップロードモーダルフィールドを作成しました。アップロード後のリダイレクトを除いて、すべて正常に機能します。

これは、モーダルウィンドウのアップロードフォームです。

<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>

そして、これはコントローラでリダイレクトがどのように見えるかです:

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));
        }
}

アップロードする前の元の場所に戻すためだけに必要です。モーダルのURLは次のとおりです。

index.php?option=com_file_manager&view=videofile&layout=modal&tmpl=component&function=jSelectVideofile_jform_video

アップロード後:

index.php?option=com_file_manager&view=videofile&layout=modal&tmpl=component&function=jSelectVideofile_jform_video

奇妙なことに、同じURLですが、同じページではありません。そのページのリストビューに移動します。

感謝の気持ちを込めて

3

問題は&amp;のような単純なものであることがわかりました。単純な変更:

<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'); ?>" />

トリックをしました。ご協力ありがとうございます。

3

フォームのview=files非表示入力にreturn-urlがあります。次に、コントローラで$return varに割り当て、それを使用してリダイレクトします。そのため、リストビューにリダイレクトされます。

1
Dmitry Rekun