Symfony 4:文件的多重包含
Symfony 4: Multiple inclusion of a file
这是我的base.html.twig
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% include 'flashes/page-title.html.twig' %}</title>
</head>
<body>
<h1>{% include 'flashes/page-title.html.twig' %}</h1>
</body>
</html>
我想知道为什么 twig 只包含一次这个文件?
当你从flashbag中收到一条flash消息时,消息会同时被清除。你可以在 Symfony's documentation of flash messages as well as in the FlashBagInterface
API.
中看到这个
所以我的猜测是 Twig 两次包含该文件,但第二次 flashbag 只是空的。这就是为什么您没有得到 h1
标签的任何信息的原因。您可以通过将静态内容(例如简单的 Hello world
)放入 flashes/page-title.html.twig
文件并查看该文件是否被包含两次来确认这一点。
您可以改为使用 peek()
方法来检索消息,同时将其保存在包中,即如果前者不起作用,则类似于 {% for title in app.flashes.peek('title') %}
或 {% for title in app.session.flashbag.peek('title') %}
。但是消息不会被清除。在您的情况下,这可能是问题,也可能不是问题。
在这种情况下,除了 flash 消息之外,还有其他更好的方法吗?
这是我的base.html.twig
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% include 'flashes/page-title.html.twig' %}</title>
</head>
<body>
<h1>{% include 'flashes/page-title.html.twig' %}</h1>
</body>
</html>
我想知道为什么 twig 只包含一次这个文件?
当你从flashbag中收到一条flash消息时,消息会同时被清除。你可以在 Symfony's documentation of flash messages as well as in the FlashBagInterface
API.
所以我的猜测是 Twig 两次包含该文件,但第二次 flashbag 只是空的。这就是为什么您没有得到 h1
标签的任何信息的原因。您可以通过将静态内容(例如简单的 Hello world
)放入 flashes/page-title.html.twig
文件并查看该文件是否被包含两次来确认这一点。
您可以改为使用 peek()
方法来检索消息,同时将其保存在包中,即如果前者不起作用,则类似于 {% for title in app.flashes.peek('title') %}
或 {% for title in app.session.flashbag.peek('title') %}
。但是消息不会被清除。在您的情况下,这可能是问题,也可能不是问题。
在这种情况下,除了 flash 消息之外,还有其他更好的方法吗?