Я неправильно использую флэш-переменные Symfony? - PullRequest
3 голосов
/ 29 мая 2009

В действии я установил некоторую обратную связь для пользователя:

    $this->getUser()->setFlash('message', array(
    "type" => "notice",
    "content" => "Well done buddy, you did it."
    ));

    $this->redirect('home/index');

В представлении я просто использую следующий код:

<?php if ($sf_user->hasFlash('message')): $message = $sf_user->getFlash('message') ?>
  <p class="<?php echo $message["type"] ?>" ><?php echo $message["content"]?></p>
<?php endif; ?>

Но сообщение никогда не появляется.

Дело не в том, что проблема не в том, «что он появляется один раз, а в том, что он исчезает», потому что это означает, что это работает Проблема в том, что он никогда не появляется. Не один раз.

Я использую Symfony 1.2, поэтому flash var теперь привязан к объекту пользователя.

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Попробуйте то же самое с двумя setFlash со строками (не массив). Я думаю, что это будет работать. Symfony экранирует массивы при обращении к нему в шаблоне. попробуйте var_dump($sf_user->getFlash('message'));, чтобы быть уверенным, что вы получите.

1 голос
/ 29 мая 2009

Вспышки в Symfony предназначены для точного отображения ответа на странице, то есть «мигания» сообщения. Если страница обновится, этой вспышки больше не будет.

Таким образом, предполагая, что пользователь отправил форму, а действие выполнило следующий код

$this->getUser()->setFlash( 'message', 'Some message here' );

И вид имеет следующее

# Note: getFlash returns "" if flash is not set
echo $sf_user->getFlash('message');

Затем самый первый запрос от этого пользователя к представлению после отправки формы и, следовательно, установки этой флэш-памяти приведет к тому, что getFlash вернет " Некоторое сообщение здесь " и удалит / сбросит флэш-память. Таким образом, любой запрос того же сообщения от этого пользователя теперь будет возвращать пустую строку.

Что это означает, вспышка длится только один запрос. Это хороший способ отобразить ответы на форме на той же странице, что и форма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...