Показать массив с переменной в Symfony - PullRequest
0 голосов
/ 30 мая 2020

В моем проекте symfony я передаю из контроллера переменную , называемую 'button'.

В этом случае 'button' имеет значение 'content', но это не всегда.

Мне нужно, чтобы он отображал содержимое scheme.content в файле '. html .twig', но я не могу.

index. html .twig:

button = '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.

Ответы [ 2 ]

2 голосов
/ 30 мая 2020

Я считаю, что проверка этой веточки может решить вашу проблему:

{% if foo.bar is defined %}

См. Do c: https://twig.symfony.com/doc/2.x/tests/defined.html

Также, если вы хотите получить доступ к объекту свойство, вы можете использовать функцию веточки

attribute

Ссылка https://twig.symfony.com/doc/2.x/functions/attribute.html

Итак, в вашем случае это будет примерно так:

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

Также вы можете дополнительно проверить, определена ли переменная button

0 голосов
/ 30 мая 2020

frase. ожидает чего-то после точки. Такая точка в twig похожа на 's: в заголовке таблицы вы запрашиваете frase's id. В элементе определения таблицы (td) twig, по сути, думает:

фраза "~ button" ?? Я ожидал свойство!

Если button содержит имя свойства, которое вы sh показываете, вы можете использовать:

frase[button]

В этом случае, если button - это «содержимое», twig будет читать его как

frase's content

PS: вы имели в виду {% for phrase in phrases %}?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...