У меня проблема со свойствами в (возможно) Twig. У меня есть контроллер в Symfony, где getCategories () , getWords () , getTranslations () методы (из Doctrine) возвращают объекты (отношения). Каждое свойство в контроллере является массивом, потому что я вызываю метод findAll () (снова из Doctrine), который возвращает массив. Наконец, я возвращаю все свойства из контроллера для просмотра (файл Twig), где пытаюсь отобразить результаты с помощью цикла Twig for.
Проблема заключается в том, что цикл Twig повторяется только для свойства flashcards (Iзнаю почему;)) и я понятия не имею, как сделать много свойств повторяющимися. Я бы хотел, чтобы цикл перебирал все свойства, возвращаемые контроллером.
В цикле foreach контроллера я попытался обновить массив flashcards новыми ассоциативными ключами, такими как: category , word и translation, чтобы все результаты, возвращаемые Doctrine (включая отношения), сохранялись в одном свойстве flashcards , но затем Symfony генерирует исключения.
Мне было интересно, создадим ли в контроллере один массив, к которому я бы вставил карточки , cateogry , word и translation массивов и затем возвращают этот один массив в представление, но я не думаю, что это хорошая практика.
Вот код метода контроллера:
public function showAllCards()
{
$flashcards = $this->getDoctrine()->getRepository(Flashcards::class)
->findAll();
foreach ($flashcards as $flashcard) {
$category = $flashcard->getCategories()->getName();
$word = $flashcard->getWords()->getWord();
$translation = $flashcard->getTranslations()->getWord();
}
return $this->render('try_me/index.html.twig', [
'flashcards' => $flashcards,
'category' => $category,
'word' => $word,
'translation' => $translation
]);
}
Вот код цикла Twig:
{% for flashcard in flashcards %}
{{ word }}
<br>
{{ flashcard.pronunciation }}
<br>
{{ flashcard.exampleSentence }}
<br>
{{ category }}
<br>
{{ translation }}
<br>
{% endfor %}
Я попытался выполнить следующий код контроллера ...
public function showMeAll()
{
$flashcards = $this->getDoctrine()->getRepository(Flashcards::class)
->findAll();
foreach ($flashcards as $flashcard) {
$flashcards['categories'] = $flashcard->getCategories()->getName();
$flashcards['words'] = $flashcard->getWords()->getWord();
$flashcards['translations'] = $flashcard->getTranslations()->getWord();
}
return $this->render('try_me/index.html.twig', [
'flashcards' => $flashcards,
]);
}
... со следующим циклом Twig ...
{% for flashcard in flashcards %}
{{ flashcard.words }}
<br>
{{ flashcard.pronunciation }}
<br>
{{ flashcard.exampleSentence }}
<br>
{{ flashcard.categories }}
<br>
{{ flashcard.translations }}
<br>
{% endfor %}
... но затем Symfony говорит:
Исключение было выдано во времярендеринг шаблона («Catchable Fatal Error: объект класса Proxies__CG __ \ App \ Entity \ Words не может быть преобразован в строку»).
Не могли бы вы дать мне несколько советов, как решить эту проблему,пожалуйста? Я бы хотел, чтобы цикл Twig повторялся по многим свойствам ( flashcard , word , category , translation ). Или напишите, если есть лучшее решение, пожалуйста.
Заранее спасибо за каждый ответ!