Sonata Admin中的全局搜索选项搜索所有具有与其关联的Admin class的(doctrine2)实体。
我想弄清楚的是如何配置全局搜索要搜索的列。在我的客户网站上,它似乎在搜索所有VARCHAR字段(原则类型:字符串),而不是TEXT字段(规则类型:文本)。
有人知道为什么会这样,以及如何改变吗?
根据sonata admin的文档,他们提到全局搜索模块将搜索所有可见的管理员,即show_in_dashboard
设置为true,它将只搜索配置的管理员的configureDatagridFilters()
功能中的字段,因此添加到admin类的$datagridMapper
对象中的字段将在sonata admin's全局搜索中搜索。
例如,您有新闻管理员,在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。如果您正在使用SonataDoctrineOfoundle任何文本过滤器都将由设置为true违约
默认情况下,sonata会查找字段描述,如果设置为字符串,它会自动参与全局搜索,您也可以通过在$datagridMapper
的add()
中设置字段选项来强制字段在搜索中使用,如下面所示
->add('name', null, array('global_search' => true), null, array()
Sonata Search