【发布时间】:2019-05-04 13:04:51
【问题描述】:
我使用我的 Controller.php 将数据返回到我的树枝模板:
return $this->render('list.html.twig', ['page' => $page]);
在我的 list.html.twig 上,我可以输出我的变量:
{{page.name}}
但我在 list.html.twig 上扩展了我的 base.html 树枝:
{% extends 'base.html.twig' %}
所以当我想在我的 base.html.twig 上输出我的变量时:
{{page.name}}
然后我收到错误消息:
未捕获的 PHP 异常 Twig_Error_Runtime:“变量”页面“没有 存在。”在 /Users/work/project/templates/base.html.twig 第 70 行
【问题讨论】:
-
你需要在模板中添加一个提供这个变量的服务,见symfony.com/doc/current/templating/global_variables.html
-
变量
page应该在扩展模板中是已知的。请参阅here 请确保您正确传递了变量。在您的主模板中尝试{{ dump(_context) }} -
@jeroen 我按照您的建议对其进行了测试。
globals: page: page但现在我收到错误消息Impossible to access an attribute ("slug") on a string variable ("page"). -
是的,没错。不过最好使用
{{ dump(_context|keys) }}转储 - 这将允许您查看所有已定义的变量 -
是的,只有宏有另一个
scope,但扩展的模板和包含的所有模板都使用相同的范围(在_context中定义)
标签: php symfony variables twig