2014-10-08 146 views
3

我正在使用SonataAdminBundle,我對MyEntityAdmin類中的過濾器有疑問。索納塔管理員,過濾器中的自定義查詢

我有第一個功能protected function configureFormFields(FormMapper $formMapper)列出所有字段將顯示在創建/編輯窗體上。

,如果我有一個字段類型的實體,我可以做這樣的事情:

->add('commercial', 'entity', array(
       'class' => 'MyBundle:User', 
       'query_builder' => function(EntityRepository $er) { 
        return $er->createQueryBuilder('u') 
          ->groupBy('u.id') 
          ->orderBy('u.id', 'ASC') 
          ->setParameters(array(1 => 'Commercial')); 
       },) 
      ) 

但我還有一個功能protected function configureDatagridFilters(DatagridMapper $datagridMapper)對過濾器形式顯示的字段,和我做同樣的事情,一個實體字段類型的自定義查詢,但如果我這樣做,我有錯誤:

No attached service to type named `entity` 

我該怎麼做?

回答

12

過濾器配置與奏鳴曲管理包中的表單配置完全不同。

看文檔:http://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html

當您添加新的篩選器通過configuratDataFilters接收參數:字段名,過濾器類型,過濾器配置,表單字段類型和表單域的配置。

所以,如果你想只覆蓋query_buider爲實體選擇類型,你應該嘗試這樣調用:

->add('commercial', null, array(), 'entity', array(
      'class' => 'MyBundle:User', 
      'query_builder' => function(EntityRepository $er) { 
       return $er->createQueryBuilder('u') 
         ->groupBy('u.id') 
         ->orderBy('u.id', 'ASC') 
         ->setParameters(array(1 => 'Commercial')); 
      } 
)) 
+0

由於一千倍! – 2015-05-21 11:11:21

相關問題