Cake php,在当前页面设置flash消息而不丢失表单内容

时间:2012-02-29 05:54:58

标签: php cakephp cakephp-1.3

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

2 个答案:

答案 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');

更多信息: