在 Symfony 中显示带有变量的数组

Show array with variable in Symfony

在我的 symfony 项目中,我从控制器传递了一个名为 'button' 的变量

在这种情况下,'button' 的值为 'content',但并非总是如此。

我需要它来显示'.html.twig'文件中phrase.content的内容,但我不能。

index.html.twig:

按钮 = 'content'

{% for frase in frases %}

    <tr>
        <th scope="row">{{ frase.id }}</th>
        <td>{{ frase. ~ button }}</td>
    </tr>

{% endfor %}

我试过这样,但它给了我以下错误:

Expected name or number. (500 Internal Server Error)

----编辑----

如果我直接输入 frase.content 就可以,但是如果我输入 frase[button],就会报错

Impossible to access a key" content"on an object of class" App \ Entity \ Frase"
that does not implement ArrayAccess interface.

frase. 期待点后的内容。 twig 中的这样一个点有点像 's:在 table header 中你要求 frase's id。在 table 定义 (td) 元素中,twig 本质上认为:

frase's " ~ button"?? I was expecting a property!

如果 button 包含您要显示的 属性 的名称,您可以使用:

frase[button]

在那种情况下,如果 button 是 "content",twig 会将其读作

frase's content

PS:你是说 {% for phrase in phrases %} 吗?

我相信这个 twig 的检查可以解决您的问题:

{% if foo.bar is defined %}

参见文档:https://twig.symfony.com/doc/2.x/tests/defined.html

另外如果你想访问对象的 属性 你可以使用 twig 函数

attribute

Link https://twig.symfony.com/doc/2.x/functions/attribute.html

所以在你的情况下它会是这样的:

{{ attribute(frase, button) ?? '' }}

您还可以另外检查是否定义了 'button' 变量