我正在使用Symfony2上的tutorial(我是PHP的新手),并且我很难显示来自 Session 对象的Flash消息。 在我的 Controller 代码
下面
<?php
namespace tuto\WelcomeBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class HomepageController extends Controller
{
public function indexAction()
{
$this->get('session')->setFlash('notice', 'Bienvenue à toi '.$this->get('session')->get('user_name').' !');
return $this->render('tutoWelcomeBundle:Homepage:index.html.twig');
}
public function whoAmIAction($name)
{
# get the session
$session = $this->get('session');
# store the user'name in the session
$session->set('user_name', $name);
return $this->redirect($this->container->get('router')->generate('tutoWelcomeBundle_homepage'));
}
}
&#13;
setFlash('notice', 'Bienvenue à toi '.$this->get('session')->get('user_name').' !')
正在返回&#39; 未定义的方法错误&#39; 。
<div id="container">
<header>
<a href="{{ path('homepage') }}" title="Retour à l'accueil">Tutoriel Symfony2</a>
Bonjour et bienvenue dans ce tutoriel pour Symfony2</p>
<p>
{% for key, flash in app.session.getFlashes()%} {%if flash%} {{flash}} {%endif%} {%endfor%}
</p>
</header>
<div id="content">
{% block content %}{% endblock %}
</div>
&#13;
平台信息
WAMP 2.5
Symfony 2.7
答案 0 :(得分:2)
由于您已经扩展了FrameworkBundle addFlash
,因此您应该可以访问名为$this->get('session')->setFlash
的方法,这是在会话中添加Flash消息的快捷方式。
您可以查找方法here的定义。
因此,只需将$this->addFlash
替换为ifelse
,您就应该好了。
答案 1 :(得分:1)
<强> [解决] 强>
基于[Artamiel] [2](下文)和以下[博客] [3]的反馈
使用控制器中的$this->get('session')->setFlash
更改$this->addFlash
,使用TWIG模板中的app.session.getFlashes()
更改app.session.get('flashes')
。
答案 2 :(得分:0)
注意:SF 2中不存在$session->addFlash
和$session->setFlash
要直接从会话对象设置flash消息(例如,如果您不在扩展SF基本控制器的控制器中),则可以使用以下方法
$session->getFlashBag()->add('[YourType]', "[YourMessage]");