Php 在Sonata管理全局搜索中搜索哪些列

Php 在Sonata管理全局搜索中搜索哪些列,php,symfony,sonata-admin,Php,Symfony,Sonata Admin,Sonata Admin中的全局搜索选项通过所有(doctrine2)实体进行搜索,这些实体具有与之关联的管理类 我想弄清楚的是如何配置全局搜索搜索哪些列。在我的客户网站上,它似乎在搜索所有的VARCHAR字段(条令类型:string),而不是文本字段(条令类型:TEXT) 有人知道这是为什么,以及如何更改吗?根据sonata admin的文档,他们提到全局搜索模块将搜索所有可见的管理员,即show\u in\u dashboard设置为true,它将只搜索配置管理员configureDatag

Sonata Admin中的全局搜索选项通过所有(doctrine2)实体进行搜索,这些实体具有与之关联的管理类

我想弄清楚的是如何配置全局搜索搜索哪些列。在我的客户网站上,它似乎在搜索所有的VARCHAR字段(条令类型:string),而不是文本字段(条令类型:TEXT)


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

根据sonata admin的文档,他们提到全局搜索模块将搜索所有可见的管理员,即
show\u in\u dashboard
设置为true,它将只搜索配置管理员
configureDatagridFilters()中的字段
仅起作用,因此添加到admin类的
$datagridMapper
对象中的字段将在Sonata admin的全局搜索中搜索

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

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id')
        ->add('name')
        ->add('createdDate');
}
configureDatagridFilters()
中,您只有名称字段可以过滤结果

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper->add('name');
}
所以Sonata将只在新闻管理员的名称字段中搜索,因为您已为此管理员配置了筛选器,所以此筛选器也用于管理员的全局搜索,除名称字段外,不会搜索其他字段


根据文件

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


有关索纳塔全球搜索的其他信息如下

搜索将迭代管理类,并使用 选项全局搜索设置为true。如果您正在使用 SonataOctrineOrbundle任何文本筛选器都将由设置为true 默认

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

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

感谢您快速而详细的回复,Khalid Junaid先生,但这对我(目前)没有帮助,因为索纳塔似乎使用了更多信息来确定搜索哪些栏目。我希望sonata在注释实体的注释字段中进行搜索,并且我已将此字段添加到CommentAdmin中的dataGridFilters:
受保护函数configureDatagridFilters(DatagridMapper$DatagridMapper){$DatagridMapper->add('user')->add('comment'))
然而,在我的结果中,我只是得到了所有的评论(没有过滤)M Khalid Jnaid,你的回答确实帮了我正确的方向,我通过以下行得到了它:
->add('comment',null,array('global_search'=>true),null,array())
(因此“options”可能是第三个参数,而不是第五个)。你能更新你的答案吗?这样我就可以批准它了(这样其他人可能会用到这个话题)。@vitrus很高兴它能帮助你我更新了我的答案,请看一看