Php 如何在Symfony 4中实现处理程序?
根据Datatable Symfony bundle文档,我需要实现一个处理程序 您必须为每个DataTable实例创建一个处理程序。处理程序必须实现DataTableHandlerInterface接口。此接口包含的唯一功能是句柄:Php 如何在Symfony 4中实现处理程序?,php,symfony,datatables,bundle,handler,Php,Symfony,Datatables,Bundle,Handler,根据Datatable Symfony bundle文档,我需要实现一个处理程序 您必须为每个DataTable实例创建一个处理程序。处理程序必须实现DataTableHandlerInterface接口。此接口包含的唯一功能是句柄: 我需要知道的是,我到底应该把代码放在哪里?在哪个文件夹和哪个页面上?您可以将处理程序文件放入 src/DataTables/UsersDataTable.php用于Symfony 4项目 在此文件中,您将实现请求处理程序(),不要忘记将其注册为服务: Users
我需要知道的是,我到底应该把代码放在哪里?在哪个文件夹和哪个页面上?您可以将处理程序文件放入
src/DataTables/UsersDataTable.php
用于Symfony 4项目
在此文件中,您将实现请求处理程序(),不要忘记将其注册为服务:
UsersDataTable.php
// src/DataTables/UsersDataTable.php
class UsersDataTable implements DataTableHandlerInterface
{
///
}
// App\Controller\SomeController.php
public function usersAction(Request $request, DataTablesInterface $datatables): JsonResponse
{
//
}
您可以在服务中注册服务。yaml
#config/services.yaml
services:
datatable.users:
class: App\DataTables\UsersDataTable
tags: [{ name: datatable, id: users }]
arguments: [ '@doctrine' ]
在此之后,您可以从控制器操作调用处理程序
SomeController.php
// src/DataTables/UsersDataTable.php
class UsersDataTable implements DataTableHandlerInterface
{
///
}
// App\Controller\SomeController.php
public function usersAction(Request $request, DataTablesInterface $datatables): JsonResponse
{
//
}
如果您按照以下说明操作:所有处理程序将自动加载。如果您按照文档操作,您会看到他们将其处理程序放入:AppBundle\DataTables\UsersDataTable并将其注册为服务:@Jeroen我没有AppBundle文件夹。我是否必须将其添加到我的根目录中?@Jarla如果您没有AppBundle文件夹,则不必创建一个。通常情况下,这样的文件夹存在,但我们不知道您的文件夹结构。你的代码通常在哪里输入?哪个文件夹?这是php代码,所以你必须把它放在一个php文件中。您必须用包的名称替换
AppBundle
。如果不使用捆绑包(如symfony 4),则必须将DataTables
文件夹放在Controller
旁边(通常在src
中)@Jarla Yes!您还需要一个控制器操作,如调用handler的“UserAction”中的解释谢谢,这比文档中的解释要好得多。如果路径实际上是src/DataTables/UsersDataTable.php
My bad(复制粘贴),请编辑我的答案。确保编写类的命名空间。