Cake php, установить флеш-сообщение на текущей странице без потери содержимого формы - PullRequest
2 голосов
/ 29 февраля 2012

В торт php, есть ли возможность установить флеш-сообщение на текущей странице без потери значений формы.

Здесь отправляется форма, тогда нам нужно установить флеш-сообщение на текущей странице без потери значений формы.(Ajax / Javascript не используется)

Форма отправлена ​​на php и установить флэш-сообщение

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 ]

2 голосов
/ 18 апреля 2012

Когда вы устанавливаете данные в файл после этой строки, установите:

$this->Session->setFlash(__('your message', true));

и где вы хотите показать, напишите в этом файле просмотра:

<?php echo $this->Session->flash(); ?>
0 голосов
/ 29 февраля 2012

Когда вы выполняете действие, которое отображает представление, return отсутствует, поэтому вы должны удалить следующие строки:

return $saveData;
return $status;

Чтобы взаимодействовать с переменными просмотра и отправки, вы используете метод set и, как в этом случае, вам нужны данные формы, вы должны снова отправить переменную $this->data:

$this->set('data', $this->data);

И, как уже сообщалось, установить флэш-сообщение:

$this->Session->setFlash('foobar');

Дополнительная информация:

...