Какие столбцы ищутся в глобальном поиске Sonata-Admin

Опция глобального поиска в Sonata Admin выполняет поиск по всем сущностям (doctrine2), с которыми связаны классы администратора.

Я пытаюсь выяснить, как настроить столбцы, в которых выполняется поиск в результате глобального поиска. На моем клиентском веб-сайте поиск выполняется по всем полям VARCHAR (тип доктрины: строка), а не по полям TEXT (тип доктрины: текст).

Кто-нибудь знает, почему это так и как это можно изменить?

5

Решение

Согласно документации администратора сонаты, они упоминали, что модуль глобального поиска будет искать всех видимых администраторов, т.е. show_in_dashboard установлен в true, и он будет искать только в тех полях, которые находятся в настроенных администраторах configureDatagridFilters() только функция, поэтому поля добавлены в $datagridMapper Объект класса admin будет найден в глобальном поиске администратора Sonata.

Например, у вас есть администратор новостей и в configureListFields() у вас есть 3 поля

protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('name')
->add('createdDate');
}

И в configureDatagridFilters() у вас есть только поле имени для фильтрации результатов

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper->add('name');
}

Поэтому Sonata будет искать только в поле имени вашего администратора новостей, потому что вы настроили фильтр для этого администратора, поэтому этот фильтр также используется в глобальном поиске администратора, и никакое другое поле не будет найдено, кроме поля имени


Согласно документам

«Глобальный поиск» позволяет конечному пользователю перебирать все видимое
Админы в приборной панели и поиск по ключевому слову. Электрический ток
реализация очень проста, каждый фильтр, связанный со строкой, будет
быть доступным для поиска по умолчанию.

ADMIN BUNDLE ~ GLOBAL SEARCH


Другая информация о глобальном поиске sonata

Поиск перебирает классы администратора и ищет фильтр с
Для параметра global_search установлено значение true. Если вы используете
SonataDoctrineORMBundle любой текстовый фильтр будет установлен в true
дефолт.

По умолчанию соната ищет описание поля, если задана строка, она автоматически включается в глобальный поиск, вы также можете принудительно использовать поле в поиске, установив параметр поля в $datagridMapper«s add()как ниже

->add('name', null, array('global_search' => true), null, array()

Sonata Search

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]