繁体   English   中英

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

[英]What columns get searched in Sonata-Admin global search

Sonata Admin中的全局搜索选项将通过所有与Admin Class相关联的(doctrine2)实体进行搜索。

我要弄清楚的是如何配置全局搜索将搜索哪些列。 在我的客户网站中,它似乎是通过所有VARCHAR字段(教义类型:字符串)而不是TEXT字段(教义类型:文本)进行搜索。

有谁知道这是为什么,以及如何更改它?

根据Sonata管理员的文档,他们提到全局搜索模块将搜索所有可见的管理员,即show_in_dashboard设置为true,并且仅在已配置管理员的configureDatagridFilters()函数中的字段中进行搜索,因此将字段添加到$datagridMapper将在Sonata admin的全局搜索中搜索admin类的$datagridMapper对象。

例如,您有新闻管理员,在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


有关奏鸣曲全局搜索的其他信息是

搜索遍历管理类,并在选项global_search设置为true的情况下查找过滤器。 如果您使用SonataDoctrineORMBundle,则默认情况下,任何文本过滤器都将设置为true。

默认情况下,sonata会查找字段描述(如果设置为字符串会自动涉及全局搜索),也可以通过在$datagridMapperadd()设置字段选项来强制字段在搜索中使用,如下所示

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

Sonata Search

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM