[英]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將僅在新聞管理員的名稱字段中進行搜索,因此該過濾器也用於全局搜索管理員,除名稱字段外,不會搜索其他任何字段
根據文檔
“全局搜索”允許最終用戶遍歷儀表板中所有可見的管理員並搜索關鍵字。 當前的實現非常簡單,默認情況下將搜索與字符串相關的每個過濾器。
有關奏鳴曲全局搜索的其他信息是
搜索遍歷管理類,並在選項global_search設置為true的情況下查找過濾器。 如果您使用SonataDoctrineORMBundle,則默認情況下,任何文本過濾器都將設置為true。
默認情況下,sonata會查找字段描述(如果設置為字符串會自動涉及全局搜索),也可以通過在$datagridMapper
的add()
設置字段選項來強制字段在搜索中使用,如下所示
->add('name', null, array('global_search' => true), null, array()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.