在Cake php中,无论如何都要在当前页面中设置flash消息而不会丢失表单值。
这里提交了一个表单,然后我们需要在当前页面中设置flash消息而不丢失表单值。 (没有ajax /没有使用Javascript)
表单提交转到php并设置flash消息
Html
<div class="videos form">
<?php echo $this->Form->create('Video');?>
<fieldset>
<legend><?php __('Add Video'); ?></legend>
<?php
echo $this->Form->input('video', array('label' => false, 'div' => false,'type' => 'file','style' =>'height:25px'));
echo $this->Form->input('title');
echo $this->Form->input('name');
?>
</fieldset>
<?php echo $this->Form->end(__('Submit', true));?>
</div>
PHP
function add()
{
if (!empty($this->data)) {
$file = $this->data['Video']['video'];
$destination = 'files/videos/';
$max_size = 100 * 1024 * 1024; //100 MB
$allowed_types = array('mp4','flv','WebM','3GPP','avi','wmv','FLV','MP4','AVI','MOV');
$status = $this->FileUpload->uploadFile($file, $destination, $max_size, $allowed_types, $filename);
if ($status == "SUCCESS") {
$userFile = $file['name'];
$extension = pathinfo($userFile, PATHINFO_EXTENSION);
$saveData = array(
'name' => $filename . '.' . $extension,
'path' => $destination
);
return $saveData;
} else {
// If this condition enters flash message is shown, but form values are lost
return $status;
}
}
}
答案 0 :(得分:2)
在该行设置后将数据设置为文件:
$this->Session->setFlash(__('your message', true));
以及要在该视图文件中显示写入的位置:
<?php echo $this->Session->flash(); ?>
答案 1 :(得分:0)
执行呈现视图的操作时,没有return
,因此您应删除这些行:
return $saveData;
return $status;
要与View和发送变量进行交互,请使用set
方法,因为在这种情况下您需要表单数据,您必须再次发送变量$this->data
:
$this->set('data', $this->data);
正如已经报道的那样,设置一条flash消息:
$this->Session->setFlash('foobar');
更多信息: