在Sonata Admin全局搜索中搜索哪些列


What columns get searched in Sonata-Admin global search

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会查找字段描述,如果设置为字符串,它会自动参与全局搜索,您也可以通过在$datagridMapperadd()中设置字段选项来强制字段在搜索中使用,如下面所示

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

Sonata Search