Подтвердить что ты не робот

Ошибка встроенного контроллера 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.
4b9b3361

Ответ 1

Решение:

Вы пытаетесь сделать шаблон ('... new.html.twig') с помощью controller() вместо контроллера/действия!

измените вашу функцию render на:

{{ render(controller('AcmeReadingBundle:Default:new')) }}

(уведомление: no "... Действие" в имени метода)


Совет:

Исключение _фрагмент чаще всего вызывается, если что-то не так с указанным именем контроллера.

то есть. пропущение имени контроллера/действия часто является причиной этого исключения.


Дальнейшее чтение:

Взгляните на эту статью поваренной книги.

Ответ 2

Я согласен с @nifr Вы пытаетесь отобразить шаблон ( "... new.html.twig" ) с помощью контроллера() вместо контроллера/действия!

измените вашу функцию рендеринга на:

{{render (controller ('AcmeReadingBundle: Default: new'))}}

(уведомление: no "... Действие" в имени метода)

Ниже приведено больше, если выше решение не дает вам решения.

  • Проверьте, является ли определенная функция в контроллере публичной функцией. В моем случае я определил, что защищен.

Спасибо,

Анируд Суд.