Sonata Admin中的全局搜索选项搜索具有与之关联的管理类的所有(doctrine2)实体。
我想弄清楚的是如何配置全局搜索搜索的列。在我的客户网站中,它似乎是在搜索所有VARCHAR字段(doctrine type:string)而不是TEXT字段(doctrine type:text)。
有人知道为什么会这样,以及如何改变它?
答案 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将仅搜索新闻管理员的名称字段,因为您已为此管理员配置了过滤器,因此此过滤器也用于全局搜索管理员,除名称字段外不会搜索其他字段
根据文件
“全局搜索”允许最终用户迭代所有可见的 管理员在仪表板中搜索关键字。目前 实现很简单,每个过滤器都与一个字符串相关 默认情况下可以搜索。
有关奏鸣曲全球搜索的其他信息是
搜索迭代管理类并查找带有的过滤器 选项global_search设置为true。如果你正在使用 SonataDoctrineORMBundle将任何文本过滤器设置为true 默认值。
默认情况下,sonata会查找字段说明,如果设置为字符串,则会自动参与全局搜索,您也可以通过在$datagridMapper
的{{1}}中设置字段选项强制字段在搜索中使用,如下所示< / p>
add()