コンテンツをimagesディレクトリにアップロードするためのアップロードモーダルフィールドを作成しました。アップロード後のリダイレクトを除いて、すべて正常に機能します。
これは、モーダルウィンドウのアップロードフォームです。
<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>
そして、これはコントローラでリダイレクトがどのように見えるかです:
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ですが、同じページではありません。そのページのリストビューに移動します。
感謝の気持ちを込めて
問題は&
のような単純なものであることがわかりました。単純な変更:
<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'); ?>" />
トリックをしました。ご協力ありがとうございます。
フォームのview=files
非表示入力にreturn-url
があります。次に、コントローラで$return
varに割り当て、それを使用してリダイレクトします。そのため、リストビューにリダイレクトされます。