gpt4 book ai didi

php - 如何将数组从 Symfony 2 Controller 传递到 TWIG 模板?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:00 25 4
gpt4 key购买 nike

我无法将数组从 symfony 2 Controller 传递到 TWIG 模板。我在 Controller 中使用这段代码:

$searchTerms['color'] = "Red";
return $this->render('TestBundle::search.html.twig',
array(
"searchTerms" => $searchTerms));

在 Twig 模板中,我试图像这样访问变量:

  1. {{ searchTerms['color'] }}
  2. {{ searchTerms.color }}

两者都没有输出,空字符串,所以看起来数组来到模板但它的元素是空的。

怎么了?

最佳答案

是的,这段代码有效。首先要检查的是您的 Twig 代码位于正确的页面 (TestBundle::search.html.twig)。这听起来可能很愚蠢,但有时会发生...

如果一切顺利,我建议您尝试在您的模板中进行调试。 调试是最重要的事情。你在编程时总会遇到这种问题,尤其是当你尝试新事物时。您调试代码的能力越好,您作为程序员的能力就越好,因为您不可能一次就把所有事情都做对。

那么,如何调试呢?

要在你的 Twig 模板中进行调试,你可以使用 debug extension of twig .要激活调试选项,您必须快速执行 change在你的配置文件中。您还可以阅读此 thread如果你丢失了。

您可以像这样调试模板中的任何变量:

<pre>
{% debug searchTerms %}
</pre>

这样,您可以轻松调试变量并测试问题所在:

{% debug searchTerms['color'] %}

如果您想快速调试,我强烈建议您使用 LadyBugBundle .这是一个很棒的工具,可以让你做这样的事情:

在你的 Controller 中:

ladybug_dump($searchTerms);

在您的 TWIG 模板中:

{{ searchTerms|ladybug_dump }}

与经典的 var_dump 选项没有太大区别,但如果您有长数组或对象,ladybug 会让您印象深刻。更重要的是,在 Controller 中,您通常需要在某个点停止代码以避免在调试语句后加载页面,这对于 ladybug 来说相当容易:

ladybug_dump_die($searchTerms);

您甚至可以使用这个简单的语句让 ladybug 将“已调试”变量加载到 Symfony 分析器中。

$this->get('ladybug')->log($searchTerms);

您现在可以从 Symfony2 分析器的选项卡直接访问变量。Ladybug 可以做的更多,但为此,doc真的很好。

关于php - 如何将数组从 Symfony 2 Controller 传递到 TWIG 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com