0

我有一门课叫做计划。我正在使用两种方法: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) 吗?

谢谢!:)

4

1 回答 1

0

您不能简单地从模板调用方法。您需要创建一个处理请求的操作。您可以在 AJAX 调用中使用此操作的路由。另外你需要通过id。设置一个 JavaScript,在单击<a>-tag 时执行 AJAX 调用。

使用 jQuery,AJAX 部分可能如下所示:

$.post('{{ path('routeNameOfDeleteAction') }}', function(data) {
    $('someSelector').html(data);
});

如果您希望它仅使用 AJAX 工作,您可以在删除操作中添加它:

if ($this->getRequest()->isXmlHttpRequest()) {
    return $this->redirect($this->generateUrl('routeNameOfIndexAction'));
}

最后,您的控制器可以返回 JSON 格式的响应,其中包含类似trueor的结果false

于 2013-03-28T16:30:54.463 回答