В Symfony 2 можно встроить контроллер в шаблон.Например, у меня может быть шаблон для поста в блоге, но я также могу встроить контроллер в опрос или список лучших статей на боковой панели шаблона.
Я заинтересован встраиваниемконтроллер, который обеспечивает опрос.Для этого я создал контроллер:
public function poll(Request $request)
{
$task = new Poll();
$form = $this->createFormBuilder($task)
->add('radio', 'one')
->add('radio', 'two')
->add('radio', 'three')
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
//save and show how many people voted for each option
}
}
return $this->render('PollBundle:Default:new.html.twig', array(
'form' => $form->createView(),
));
}
Затем я могу встроить его в качестве элемента боковой панели в свой шаблон:
<div id="sidebar">
{% render "PollBundle:Poll:poll" %}
</div>
Проблема теперь заключается в следующем: если яустановите для действия формы значение ""
, тогда, если опрос был отправлен, запрос будет проходить через главный контроллер, который встраивает контроллер опроса.Затем я могу использовать скрытое поле, чтобы проверить, был ли опрос отправлен с использованием формы опроса, затем обновить базу данных и отобразить результат.Затем он возвращается в шаблон основного контроллера, и все хорошо.
Теперь я хотел бы использовать AJAX для упрощения отправки форм для тех, у кого включен JavaScript.Как я могу сделать это?Поскольку действие формы установлено на ""
, запрос будет проходить через главный контроллер, визуализировать шаблон, который затем вызывает контроллер опроса.Но я хотел бы просто вернуть ответ AJAX, содержащий голоса, отданные за каждый элемент.В любом случае, необходимость проходить через главный контроллер только для того, чтобы заполнить опрос с использованием AJAX-запроса, также кажется довольно расточительной.
Как мне поступить так?