如何在Symfony 4中实现处理程序?

时间:2018-07-05 07:41:29

标签: php symfony datatables bundle handler

根据Datatable Symfony捆绑包文档,我需要实现一个处理程序。

您必须为每个DataTable实例创建一个处理程序。处理程序必须实现DataTableHandlerInterface接口。该接口包含的唯一功能是handle:

  /**
   * Handles specified DataTable request.
   *
   * @param DataTableQuery $request
   *
   * @throws DataTableException
   * @return DataTableResults
   */
  public function handle(DataTableQuery $request): DataTableResults;

我需要知道的是,我到底要将代码放在哪里?在哪个文件夹和哪个页面上?

1 个答案:

答案 0 :(得分:1)

您可以将处理程序文件放入 src/DataTables/UsersDataTable.php用于Symfony 4项目。

在此文件中,您将实现请求处理程序(https://github.com/webinarium/DataTablesBundle/wiki#step-1-implement-request-handler)。不要忘记将其注册为服务: https://github.com/webinarium/DataTablesBundle/wiki#step-2-register-the-handler

UsersDataTable.php

// src/DataTables/UsersDataTable.php
class UsersDataTable implements DataTableHandlerInterface
{
    ///
}

您在 services.yaml

中注册服务
#config/services.yaml

services:
   datatable.users:
       class: App\DataTables\UsersDataTable
       tags: [{ name: datatable, id: users }]
       arguments: [ '@doctrine' ]

此后,您可以从控制器操作中调用处理程序 https://github.com/webinarium/DataTablesBundle/wiki#step-3-invoke-the-handler

SomeController.php

// App\Controller\SomeController.php

public function usersAction(Request $request, DataTablesInterface $datatables): JsonResponse
{
   //
}

如果您按照https://github.com/webinarium/DataTablesBundle/wiki#handlers-service-autoloading下的说明进行操作,则会自动加载所有处理程序。