在Twig中调用方法

时间:2013-03-28 16:04:40

标签: twig symfony-2.1

我有一个名为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)吗?

谢谢! :)

1 个答案:

答案 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中返回一个包含truefalse结果的响应。