【问题标题】:Calling a method within Twig在 Twig 中调用方法
【发布时间】:2013-03-19 04:12:28
【问题描述】:

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

谢谢! :)

【问题讨论】:

  • 任何你想通过 HTTP 访问的东西都应该有一个路由和一个控制器。您可以添加一个新操作并让它调用您的deletePlan,然后返回一个带有某种操作状态的响应,大概是 JSON。

标签: twig symfony-2.1


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 您也可以使用$this-&gt;getRequest()-&gt;isXmlHttpRequest() 进行检查;)
  • @l3l0 感谢您的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多