Sonata中的全局搜索选项搜索与其关联的所有(doctrine2)实体。
我想弄清楚的是如何配置全局搜索所搜索的列。在我的客户网站上,它似乎是搜索所有的VARCHAR字段(原则类型:字符串),而不是文本字段(原则类型:文本)。
有谁知道这是为什么,以及如何改变它?
发布于 2014-09-18 11:55:07
根据sonata的文档,他们提到全局搜索模块将搜索所有可见的管理员,即show_in_dashboard设置为true,并且只在配置的admin的configureDatagridFilters()函数中搜索,因此添加到admin类的$datagridMapper对象的字段将在Sonata的全局搜索中搜索。
例如,您有新闻管理,在configureListFields()中有3个字段
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('name')
->add('createdDate');
}在configureDatagridFilters()中,只有name字段来筛选结果
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper->add('name');
}因此Sonata将只在新闻管理的name字段中搜索,因为您已经为此管理配置了一个筛选器,因此此筛选器也用于全局管理搜索,除name字段外,没有其他字段被搜索。
根据医生
“全局搜索”允许最终用户遍历仪表板中所有可见的管理员并搜索关键字。当前的实现非常简单,默认情况下,每个与字符串相关的过滤器都是可搜索的。
ADMIN BUNDLE ~ GLOBAL SEARCH
其他有关奏鸣曲全球搜索的信息如下
搜索遍历管理类,并在选项global_search设置为true的情况下查找筛选器。如果使用的是SonataDoctrineORMBundle,默认情况下,任何文本筛选器都将设置为true。
默认情况下,奏鸣曲查找字段描述,如果设置为string,则在全局搜索中自动包含字段,您也可以通过在$datagridMapper的add()中设置字段选项来强制在搜索中使用字段,如下所示
->add('name', null, array('global_search' => true), null, array()Sonata Search
https://stackoverflow.com/questions/25909103
复制相似问题