Я использую Symfony 2.8.0 (так как я нахожу Symfony 3.x не очень зрелым на данный момент, но давайте не будем вдаваться в это обсуждение прямо сейчас).Передача аргументов встроенному контроллеру в Symfony 2.8
В соответствии с официальной документацией (http://symfony.com/doc/2.8/book/templating.html#embedding-controllers) должно быть возможно передать аргументы встроенному контроллеру, вызванному из представления.
Однако это не работает. Я всегда в конечном итоге, за исключением следующего:
«контроллер„AppBundle \ Controller \ контроллера по умолчанию :: buildNavigationAction()“требует, чтобы вы обеспечиваете значение для„аргумента $ argument1“(потому что нет значения по умолчанию или потому что после этого есть необязательный аргумент). "
В мой взгляд, я следующий кусок кода:
{{ render(controller('AppBundle:Default:buildNavigation'), {
'argument1': 25,
'argument2': 50
}) }}
Контроллер выглядит следующим образом:
public function buildNavigationAction($argument1, $argument2)
{
// ... some logic ...
return $this->render(
'navigation.html.twig', array(
'foo' => $argument1,
'bar' => $argument2
)
);
}
Что это дает? Это ошибка?
Вариант использования, описанный в документации (рендеринг динамического содержимого из базового шаблона и, следовательно, на каждой странице), является именно тем, для чего я его использую. Повторение одной и той же логики в каждом контроллере является очевидным грехом против принципа DRY.
Он также не работает, чтобы получить аргументы через $ argument1 = $ request-> query-> Get ('argument1'); Значения остаются пустыми. Их просто не пропускают вообще, так кажется. –