Ошибка встроенного контроллера Symfony: контроллер для URI "/_fragment" не может быть вызван
Я вызываю рендеринг в шаблоне Twig (строка 18)
{{ render(controller('AcmeReadingBundle:Default:newAction')) }}
И контроллер
public function newAction(Request $request)
{
$message = new Message();
$form = $this->createFormBuilder($message)
->add('body', 'text')
->add('save', 'submit')
->getForm();
$form->handleRequest($request);
return $this->render('AcmeReadingBundle:Default:new.html.twig', array(
'form' => $form->createView(),
));
}
И файл new.html.twig
{{ form(form) }}
Я продолжаю получать эту ошибку:
An exception has been thrown during the rendering of a template ("The controller for URI "/_fragment" is not callable.") in AcmeReadingBundle:Default:show.html.twig at line 18.
Ответы
Ответ 1
Решение:
Вы пытаетесь сделать шаблон ('... new.html.twig') с помощью controller()
вместо контроллера/действия!
измените вашу функцию render
на:
{{ render(controller('AcmeReadingBundle:Default:new')) }}
(уведомление: no "... Действие" в имени метода)
Совет:
Исключение _фрагмент чаще всего вызывается, если что-то не так с указанным именем контроллера.
то есть. пропущение имени контроллера/действия часто является причиной этого исключения.
Дальнейшее чтение:
Взгляните на эту статью поваренной книги.
Ответ 2
Я согласен с @nifr
Вы пытаетесь отобразить шаблон ( "... new.html.twig" ) с помощью контроллера() вместо контроллера/действия!
измените вашу функцию рендеринга на:
{{render (controller ('AcmeReadingBundle: Default: new'))}}
(уведомление: no "... Действие" в имени метода)
Ниже приведено больше, если выше решение не дает вам решения.
- Проверьте, является ли определенная функция в контроллере публичной функцией. В моем случае я определил, что защищен.
Спасибо,
Анируд Суд.