Symfony - Ajaxify table filter


Symfony - Ajaxify table filter

在我学习Symfony(版本3(的旅程中,我用过滤器表单构建了一个客户列表。我已经在互联网上搜索了一些示例,以根据提供的过滤器对表结果进行 ajax化。大多数信息都是关于现有的捆绑包,如stwe/DatatablesBundle,或者将Symfony与Angular/ReactJS结合使用。

提到的最后一个选项实际上非常有趣,但作为Symfony的初学者,我对在Symfony/Javascript或JQuery中从头开始构建此功能更感兴趣。换句话说,指令类似于 http://www.w3schools.com/php/php_ajax_database.asp,但特定于Symfony。

我熟悉创建 JSON 响应,但绑定数据的最佳方法是什么?用JQuery写出来?...

谢谢你的建议。

在我看来,最好的方法是拥有一个仅呈现数据行的模板。然后创建一个控制器操作,其目的是使用筛选器提取数据并使用data_rows模板呈现此数据。

public function tableAction(Request $request)
{
    $filters = // ...
    $rows = $repository->findAllWithFilters($filters);
    // ...
    return $this->render('data_rows.html.twig', ['rows' => $rows]);
}

最后,在"主"操作中使用render controller将此请求作为主视图的子请求包含在内:

{{ render(controller('AppBundle:Default:table', {'filters': filters})) }}

完成后,您可以直接在 jQuery 脚本中调用 tableAction 路由,这将返回渲染的行。只需在 HTML 中附加行即可