Symfony从控制器设置块内容

时间:2014-11-27 21:33:45

标签: php symfony twig

有没有办法在Symfony的控制器中设置模板块内容?

有没有办法在控制器内做这样的事情?

$this->get('templating')->setBlockContent('page_title', $page_title);

我需要动态设置页面标题,我想避免修改每个动作模板。

我知道我可以将$page_title变量传递给Controller:render,但我不想添加

{% block title %}
{{ page_title }}
{% endblock %}

到每个动作模板。

1 个答案:

答案 0 :(得分:0)

由于任何父Twig模板处理传递给子模板的变量,因此有一种更简单的方法可以实现您想要的功能。实际上,这种方法基本相当于从控制器将内容写入整个块,因为我们基本上只是使用render

将传递的{% block %}{{ variable }}{% endblock %}变量直接插入到内容中

使用标题栏

启动基本布局模板
{# Resources/views/base.html.twig #}
<html>
<head>
     <title>{% block title %}{{ page_title is defined ? page_title }}{% endblock %}</title>
{# ... Rest of your HTML base template #}
</html>

如果您想要覆盖或附加{% block %}

您还可以添加网站范围的标题,以便parent()可以附加(如果存在):

page_title

使用每个子模板扩展此基本布局

<title>{% block title %}{{ page_title is defined ? page_title ~ ' | ' }}Acme Industries Inc.{% endblock %}</title>

{# Resources/views/Child/template.html.twig #} {% extends '::base.html.twig' %} {# You can even re-use the page_title for things like heading tags #} {% block content %} <h1>{{ page_title }}</h1> {% endblock %} 传递到引用您的子模板的page_title函数

render