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

vit*_*rus 5 php symfony sonata-admin

Sonata Admin中的全局搜索选项搜索具有与之关联的管理类的所有(doctrine2)实体.

我想弄清楚的是如何配置全局搜索搜索的列.在我的客户网站中,它似乎是在搜索所有VARCHAR字段(doctrine type:string)而不是TEXT字段(doctrine type:text).

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

M K*_*aid 5

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

例如,您有新闻管理员,并且在configureListFields()3个字段中

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id')
        ->add('name')
        ->add('createdDate');
}
Run Code Online (Sandbox Code Playgroud)

并且在configureDatagridFilters()您只有名称字段可以过滤结果

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper->add('name');
}
Run Code Online (Sandbox Code Playgroud)

因此,由于您已为此新闻管理员配置了过滤器,因此Sonata将仅在新闻管理员的名称字段中进行搜索,因此该过滤器也用于全局搜索管理员,除名称字段外,不会搜索其他任何字段


根据文档

“全局搜索”允许最终用户遍历仪表板中所有可见的管理员并搜索关键字。当前的实现非常简单,默认情况下将搜索与字符串相关的每个过滤器。

ADMIN BUNDLE ~ GLOBAL SEARCH


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

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

默认情况下,索纳塔的外观进行实地说明,如果在搜索在设置栏选项一起使用,组串工作在全局搜索中,您也可以强制场将自动涉及$datagridMapperadd()像下面

->add('name', null, array('global_search' => true), null, array()
Run Code Online (Sandbox Code Playgroud)

Sonata Search