我无法将数组从symfony 2控制器传递到TWIG模板.我在控制器中使用此代码:
$searchTerms['color'] = "Red";
return $this->render('TestBundle::search.html.twig',
array(
"searchTerms" => $searchTerms));
Run Code Online (Sandbox Code Playgroud)
在twig模板中,我试图像这样访问变量:
两者都没有输出,空字符串,所以看起来数组来到模板但它的元素是空的.
怎么了?
Mic*_*ick 10
是的,这段代码有效.首先要检查的是你的twig代码在正确的页面中(TestBundle::search.html.twig).这可能听起来很傻但有时会发生......
如果这一切都很好,我建议您尝试在模板中进行调试.调试是最重要的事情.在编程时,你总会遇到这种问题,特别是当你尝试新的东西时.调试代码越好,作为程序员就越好,因为你无法在第一时间完成所有事情.
要在twig模板中进行调试,可以使用twig的调试扩展.要激活调试选项,您必须快速更改配置文件.如果你输了,你也可以阅读这个帖子.
您可以在模板中调试任何变量,如下所示:
<pre>
{% debug searchTerms %}
</pre>
Run Code Online (Sandbox Code Playgroud)
这样,您可以轻松调试变量并测试您的问题:
{% debug searchTerms['color'] %}
Run Code Online (Sandbox Code Playgroud)
如果您想快速调试,我强烈建议您使用LadyBugBundle.这是一个很棒的工具,可以让你做这样的事情:
在你的控制器中:
ladybug_dump($searchTerms);
Run Code Online (Sandbox Code Playgroud)
在您的TWIG模板中:
{{ searchTerms|ladybug_dump }}
Run Code Online (Sandbox Code Playgroud)
与经典var_dump选项没有什么不同,但如果你有长阵列或对象,ladybug会给你留下深刻印象.更重要的是,在控制器中,您通常需要在某个时刻停止代码以避免在调试语句之后加载页面,这对于使用瓢虫来说相当容易:
ladybug_dump_die($searchTerms);
Run Code Online (Sandbox Code Playgroud)
您甚至可以通过这个简单的语句让瓢虫将"已调试"变量加载到Symfony探查器中.
$this->get('ladybug')->log($searchTerms);
Run Code Online (Sandbox Code Playgroud)
您现在可以从Symfony2探查器的选项卡直接访问该变量. 瓢虫可以做更多,但为此,文档真的很好.
| 归档时间: |
|
| 查看次数: |
25511 次 |
| 最近记录: |