我正在尝试在我的控制器中设置Flash,然后检查TWIG是否已设置Flash.我的问题是TWIG总是报告我的Flash没有设置,我不确定为什么.
控制器:
$session->getFlashBag()->add('error', 'Does Not Exist');
Run Code Online (Sandbox Code Playgroud)
枝条:
{{ dump( app.session.hasFlash('error') ) }} //outputs false
{{ dump( app.session.getFlashBag().get('error') ) }} //outputs false
Run Code Online (Sandbox Code Playgroud)
Ven*_*enu 53
在控制器中
$this->get('session')->getFlashBag()->set('error', 'Does Not Exist');
or
$this->get('session')->getFlashBag()->add('error', 'Does Not Exist');
Run Code Online (Sandbox Code Playgroud)
在Twig
{% for flashMessage in app.session.flashbag.get('error') %}
{{ flashMessage }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
仅供参考:Doc
小智 16
在控制器中:
$this->get('session')->getFlashBag()->add('error', "User does not exists.");
Run Code Online (Sandbox Code Playgroud)
在视图中:
{% for type, messages in app.session.flashbag.all() %}
{% for message in messages %}
{% if type == 'error' %}
{{ message }}
{% endif %}
{# Or even with css class rendering:
<div class="flash-{{type}}">{{message}}</div>
#}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
值得注意的是,在Symfony 3.3及更高版本中我们可以使用简化版本app.flashes().例:
{% for message in app.flashes('notice') %}
<div class="flash-notice">
{{ message }}
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
使用 Symfony 5。如果要使用引导类命名显示所有闪存,只需将闪存类型设置为引导类名称(成功/危险/警告...等)
在控制器中设置如下:
$this->addFlash('success', 'Action completed successfully.');
or...
$this->addFlash('danger', 'An error occurred.');
Run Code Online (Sandbox Code Playgroud)
在 Twig 中显示一次,例如在基本模板中 - 像这样(注意简化的 app.flashes 数组变量):
{% for type, messages in app.flashes %}
{% for message in messages %}
<div class="alert alert-{{ type }}">{{ message }}</div>
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48788 次 |
| 最近记录: |