Symfony - Исключение 'Ключ "xy" для массива с ключами "0, 1, .." не существует. "при использовании функции заголовка ветки - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь отобразить имя воспроизведения из указанной таблицы, но получаю ошибку

Ключ «playName» для массива с ключами «0, 1, 2, 3, 4, 5»не существует.

Я знаю, в чем заключается ошибка, но не могу понять, что делать дальше.

public function playTicketsAction(Request $request)
{
    $query = $this->getDoctrine()
        ->getRepository('AppBundle:Play')
        ->findAll();

    $build['playName'] = $query;

    return $this->render('@FrontTemplates/pages/tickets.html.twig', array(
        'playName' => $build
    ));
}

и в ветке

<div class="card-header card-header-warning">
    {% for t in playName %}
    <h4 class="card-title ">{{ t.playName }}</h4>
    {% endfor %}
    <p class="card-category"> Here you can choose available ticket category</p>
</div>

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Сначала замените $build['playName'] = $query; на $build = $query;.

Затем измените имя переменной Twig:

return $this->render('@FrontTemplates/pages/tickets.html.twig', array(
    'query_result' => $build // change it so it's not "playName"
));

Ваша переменная Twig {{ query_result }} будет массивом, результатваш запрос.

Теперь в вашем шаблоне Twig просто сделайте:

{% for t in query_result %}
    <h4 class="card-title ">{{ t.playName }}</h4>
{% endfor %}

Теперь вы получите имя столбца playName для каждой строки, полученной в вашем запросе.

Раньше вы делали:

{% for t in playName %}
    <h4 class="card-title ">{{ t.playName }}</h4>
{% endfor %}

Итак, вы добавили массив playName и хотели отобразить {{ t.playName }}: playName был вашим массивом имен Twig, а не именем столбца каждой строки, поэтому выесть две разные вещи с похожим именем.

Это нормально для вас?

0 голосов
/ 05 октября 2018

Пример использования тега for с ассоциативным массивом:

<div class="card-header card-header-warning">
{% for t in playName.playName %}
<h4 class="card-title ">{{ t }}</h4>
{% endfor %}
<p class="card-category"> Here you can choose available ticket category</p>
</div>
...