Опция глобального поиска в Sonata Admin выполняет поиск по всем сущностям (doctrine2), с которыми связаны классы администратора.
Я пытаюсь выяснить, как настроить столбцы, в которых выполняется поиск в результате глобального поиска. На моем клиентском веб-сайте поиск выполняется по всем полям VARCHAR (тип доктрины: строка), а не по полям TEXT (тип доктрины: текст).
Кто-нибудь знает, почему это так и как это можно изменить?
Согласно документации администратора сонаты, они упоминали, что модуль глобального поиска будет искать всех видимых администраторов, т.е. 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 будет искать только в поле имени вашего администратора новостей, потому что вы настроили фильтр для этого администратора, поэтому этот фильтр также используется в глобальном поиске администратора, и никакое другое поле не будет найдено, кроме поля имени
Согласно документам
«Глобальный поиск» позволяет конечному пользователю перебирать все видимое
Админы в приборной панели и поиск по ключевому слову. Электрический ток
реализация очень проста, каждый фильтр, связанный со строкой, будет
быть доступным для поиска по умолчанию.
Другая информация о глобальном поиске sonata
Поиск перебирает классы администратора и ищет фильтр с
Для параметра global_search установлено значение true. Если вы используете
SonataDoctrineORMBundle любой текстовый фильтр будет установлен в true
дефолт.
По умолчанию соната ищет описание поля, если задана строка, она автоматически включается в глобальный поиск, вы также можете принудительно использовать поле в поиске, установив параметр поля в $datagridMapper
«s add()
как ниже
->add('name', null, array('global_search' => true), null, array()
Других решений пока нет …