我有一个名为Plans的课程。我正在使用两种方法:indexAction()deletePlan($ id)。 indexAction()使用以下内容呈现index.html.twig:
index.html.twig
<tr>
<td>{{ item.name }}</td>
<td>{{ item.description}}</td>
<td><a href="">Delete</td>
</tr>
对于最后一个标记中的Delete链接,我需要实际执行deletePlan($ id)方法。我不希望这是一个重定向到的实际页面。我计划调用deletePlan($ id)方法,如果它返回true或false则捕获,然后使用AJAX隐藏(行)。
所以问题是:我可以在我的twig文件中调用deletePlan($ id)方法而不实际设置页面,设置路由,并将方法重命名为deletePlanAction($ id)吗?
谢谢! :)
答案 0 :(得分:0)
您不能简单地从模板中调用方法。您需要创建一个处理请求的操作。您可以在AJAX调用中使用此操作的路由。此外,您需要通过id
。设置一个JavaScript,通过点击<a>
- 标记执行AJAX调用。
使用jQuery,AJAX部分可能如下所示:
$.post('{{ path('routeNameOfDeleteAction') }}', function(data) {
$('someSelector').html(data);
});
如果您希望仅使用AJAX,则可以在删除操作中添加:
if ($this->getRequest()->isXmlHttpRequest()) {
return $this->redirect($this->generateUrl('routeNameOfIndexAction'));
}
最后,你的控制器可以在JSON中返回一个包含true
或false
结果的响应。