Criei um campo modal de upload para enviar conteúdo para o diretório de imagens e tudo funciona perfeitamente bem, exceto o redirecionamento após o upload.
Este é o formulário de upload na janela modal:
<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>
E é assim que o redirecionamento fica no controlador:
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));
}
}
Eu só preciso que ele me leve de volta ao local original em que estava antes de fazer o upload, o URL do modal é:
index.php?option=com_file_manager&view=videofile&layout=modal&tmpl=component&function=jSelectVideofile_jform_video
e após o upload:
index.php?option=com_file_manager&view=videofile&layout=modal&tmpl=component&function=jSelectVideofile_jform_video
Estranho, eu sei, é o mesmo URL, mas não é a mesma página. Isso me leva à exibição em lista dessa página.
Qualquer ajuda muito apreciada
O problema acabou sendo algo tão simples quanto &
, Mudança simples:
<input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_file_manager&view=file&layout=modal&tmpl=component'); ?>" />
para:
<input type="hidden" name="return-url" value="<?php echo base64_encode('index.php?option=com_file_manager&view=file&layout=modal&tmpl=component'); ?>" />
Fiz o truque. Obrigado a todos por suas contribuições.
Você tem view=files
na tua return-url
entrada oculta do formulário. Em seguida, no controlador, você o atribui a $return
var e redirecione usando-o. É por isso que você está sendo redirecionado para a exibição de lista.