Как я могу реализовать обработчик в Symfony 4?

Согласно документации пакета Datatable Symfony, мне нужно реализовать обработчик.

Вам необходимо создать обработчик для каждого экземпляра DataTable. Обработчик должен реализовывать интерфейс DataTableHandlerInterface. Единственная функция, которую содержит этот интерфейс, - дескриптор:

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

Что мне нужно знать, так это где именно я должен поместить этот код? В какой папке и на какой странице?

Если вы следовали документации, вы видите, что они помещают свои обработчики в: AppBundle \ DataTables \ UsersDataTable и регистрируют его как службу: github.com/webinarium/DataTablesBundle/…

Jeroen 05.07.2018 09:47

@Jeroen У меня нет папки AppBundle. Мне нужно добавить это в свой корень?

peace_love 05.07.2018 09:49

Это UsersDataTable.php или UsersDataTable.yaml?

peace_love 05.07.2018 09:50

Я думаю, мне нужно создать папку «AppBundle» в «src», правильно?

peace_love 05.07.2018 09:52

@Jarla, если у вас нет папки AppBundle, вам не нужно ее создавать. Обычно такая папка существует, но нам неизвестна структура вашей папки. Куда обычно попадает ваш код? В какой папке?

Jim Panse 05.07.2018 09:56

это PHP-код, поэтому вы должны поместить его в PHP-файл. и вы должны заменить AppBundle названием вашего пакета. если вы не используете бандлы (как в symfony 4), вам нужно поместить папку DataTables рядом с Controller (обычно в src)

ᴄʀᴏᴢᴇᴛ 05.07.2018 09:58

Я создал сейчас этот файл src/Controller/DataTableController.php. Это сработает?

peace_love 05.07.2018 09:59

Как сказал @JimPanse, вам не нужно создавать его, просто создайте папку с именем «DataTables» рядом с папками Controller и Entity.

Jeroen 05.07.2018 10:00

Это сработает, но если мы все еще говорим о вашем файле обработчика, было бы лучше назвать его «UsersDataTable» и поместить его в папку «DataTables», потому что это не контроллер.

Jeroen 05.07.2018 10:01

@Jeroen Хорошо, тогда мой файл будет src/DataTables/UsersDataTable.php, вы это имеете в виду?

peace_love 05.07.2018 10:02

@Jarla Да! И вам также понадобится действие контроллера, как описано в разделе «UserAction» в github.com/webinarium/DataTablesBundle/…, которое вызывает обработчик

Jeroen 05.07.2018 10:03

Спасибо. Я не знаю, почему они не объясняют, куда идет код. Например этот код services: AppBundle\DataTables\: resource: '../../src/AppBundle/DataTables' autowire: true public: false tags: [ datatable ] На какой странице это?

peace_love 05.07.2018 10:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
12
813
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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, все ваши обработчики будут загружены автоматически.

Спасибо, это гораздо лучше объяснено, чем документация

peace_love 05.07.2018 10:15

зачем писать AppBundle\DataTables\UsersDataTable, если путь на самом деле src/DataTables/UsersDataTable.php

peace_love 05.07.2018 10:57

Мой плохой (копипаст) отредактировал свой ответ. Убедитесь, что вы написали пространство имен своего класса.

Jeroen 05.07.2018 10:59

Другие вопросы по теме