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

How can I implement a handler in Symfony 4?

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

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

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

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

你可以把handler文件放在 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 您的所有处理程序都将自动加载。