Как сделать Easy Admin Symfony 4 кастомный поиск?

Для создания кастомного поиска в EasyAdminBundle Symfony 4, вам понадобится выполнить несколько шагов.

Шаг 1: Создание кастомного фильтра
Создайте новый класс, который будет представлять кастомный фильтр. Например, вы можете создать класс CustomSearchFilter, который будет наследоваться от класса EasyCorpBundleEasyAdminBundleFilterAbstractFilter. В этом классе вы будете определять логику для выполнения поиска.

use EasyCorpBundleEasyAdminBundleFilterAbstractFilter;
use DoctrineORMQueryBuilder;

class CustomSearchFilter extends AbstractFilter
{
    public function apply(QueryBuilder $queryBuilder): void
    {
        $value = $this->getValue();

        if (null !== $value) {
            // ... Ваша логика поиска ...
        }
    }
}

Шаг 2: Зарегистрировать фильтр в конфигурации EasyAdminBundle
В вашем файле config/packages/easy_admin.yaml добавьте следующую конфигурацию:

easy_admin:
    # ...
    design:
        assets:
            # ...
            css:
                - 'bundles/easyadmin/css/admin.css'
                - 'css/custom_admin.css' # ваш пользовательский CSS-файл
            js:
                - 'bundles/easyadmin/js/admin.js'
                - 'js/custom_admin.js' # ваш пользовательский JS-файл
    entities:
        Сategory:
            # ...
            search:
                - CustomSearchFilter

Шаг 3: Создание пользовательских CSS и JS файлов
Создайте пользовательский CSS-файл и JS-файл. В CSS-файле вы можете определить стили для вашего кастомного поискового поля, а в JS-файле вы можете обрабатывать события, связанные с поиском.

/* custom_admin.css */

.custom-search {
    /* ... Стили для вашего кастомного поискового поля ... */
}
// custom_admin.js

document.addEventListener('DOMContentLoaded', () => {
    const searchInput = document.querySelector('.custom-search');

    searchInput.addEventListener('input', () => {
        // ... Ваша логика обработки изменения значения поискового поля ...
    });
});

Шаг 4: Использование кастомного фильтра
Теперь, когда вы создали и зарегистрировали кастомный фильтр, вы можете использовать его в вашем контроллере или в административном интерфейсе EasyAdminBundle. Например, вы можете добавить следующую конфигурацию к вашему контроллеру:

use EasyCorpBundleEasyAdminBundleControllerAbstractCrudController;

class CategoryCrudController extends AbstractCrudController
{
    // ...
    public function configureFilters(Filters $filters): Filters
    {
        return $filters
            ->add('name')
            ->add(CustomSearchFilter::class);
    }
}

Теперь вы можете использовать ваш кастомный фильтр в административном интерфейсе EasyAdminBundle для поиска записей по вашим собственным правилам. Вы также можете настроить и расширить функциональность вашего кастомного фильтра, добавляя дополнительные методы и свойства в класс CustomSearchFilter.

Это позволит вам создать гибкий и кастомизируемый поиск в EasyAdminBundle Symfony 4 в соответствии со своими потребностями и бизнес-правилами.