如何在symfony1.4中设置和显示flash消息

时间:2012-03-06 10:04:36

标签: symfony1 symfony-1.4

我正在创建一个登录表单,如果登录失败,我必须设置一条flash消息。我使用以下代码来设置Flash消息。 在actions.class.php里面有一个名为executeLogin_process的函数

$this->getUser()->setFlash('error', 'Invalid User Name or Password', false);
$this->redirect('login/index');

并在indexSuccess.php中显示消息

<?php if ($sf_user->hasFlash('error')): ?>
  <div class="flash_error"><?php echo $sf_user->getFlash('error') ?></div>
<?php endif ?>

通过使用此我无法显示错误消息。我不知道我是否使用正确的代码。任何人请帮助我...

3 个答案:

答案 0 :(得分:9)

不要在setFlash方法上使用第三个参数 这将有效:

$this->getUser()->setFlash('error', 'Invalid User Name or Password');

请参阅:http://www.symfony-project.org/api/1_4/sfUser#method_setflash

如果第三个参数设置为false。闪存消息不会持续传递重定向。

答案 1 :(得分:2)

setFlash ($name, $value, $persist)
  如果闪存必须持续存在于以下请求,则

$ persist为true   (默认为true)

为什么将第3个参数设置为false

$this->getUser()->setFlash('error', 'Invalid User Name or Password', true);

第三个参数是默认true,所以只需:

$this->getUser()->setFlash('error', 'Invalid User Name or Password');

答案 2 :(得分:0)

如果删除了Flash消息:

$this->getUser()->setFlash('error', NULL);

如果您使用成功页面或布局,请执行$sf_user->setFlash('error', NULL)