簡體   English   中英

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

[英]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將僅在新聞管理員的名稱字段中進行搜索,因此該過濾器也用於全局搜索管理員,除名稱字段外,不會搜索其他任何字段


根據文檔

“全局搜索”允許最終用戶遍歷儀表板中所有可見的管理員並搜索關鍵字。 當前的實現非常簡單,默認情況下將搜索與字符串相關的每個過濾器。

ADMIN BUNDLE ~ GLOBAL SEARCH


有關奏鳴曲全局搜索的其他信息是

搜索遍歷管理類,並在選項global_search設置為true的情況下查找過濾器。 如果您使用SonataDoctrineORMBundle,則默認情況下,任何文本過濾器都將設置為true。

默認情況下,sonata會查找字段描述(如果設置為字符串會自動涉及全局搜索),也可以通過在$datagridMapperadd()設置字段選項來強制字段在搜索中使用,如下所示

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

Sonata Search

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM