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

时间:2014-09-18 09:34:33

标签: php symfony sonata-admin

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

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

有人知道为什么会这样,以及如何改变它?

1 个答案:

答案 0 :(得分:4)

根据sonata admin的文档,他们提到全局搜索模块将搜索所有可见的管理员,即show_in_dashboard设置为true,并且它将只搜索配置为admin configureDatagridFilters()的那些字段仅限函数,因此将在Sonata 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会查找字段说明,如果设置为字符串,则会自动参与全局搜索,您也可以通过在$datagridMapper的{​​{1}}中设置字段选项强制字段在搜索中使用,如下所示< / p>

add()

Sonata Search