【发布时间】:2011-11-11 11:46:23
【问题描述】:
在 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 请求填充民意调查似乎也很浪费。
我该怎么做呢?
【问题讨论】: