2016-02-16 45 views
0

有沒有辦法爲SonataAdminBundle創建自定義過濾器類型,該類型擴展了另一種類型,例如類型doctrine_orm_callback?這個想法是重複使用其他過濾器中的自定義類型SonataAdminBundle:創建自定義過濾器類型

public function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 

    $datagridMapper 
     ->add('field', 'doctrine_orm_callback', array(
      'callback' => function($queryBuilder, $alias, $field, $value) { 
       if (!$value['value']) { 
        return; 
       } 

       $queryBuilder->leftJoin(sprintf('%s.field', $alias), 'field') 
        ->andWhere("field LIKE :field") 
        ->setParameter('field', "%{$value['value']}%"); 

       return true; 
      }, 
      'field_type' => 'search'), null, array('pattern' => '^[A-Za-z0-9]{1,12}$')); 
} 

謝謝!

+0

在AdminService和功能invoque定義功能:P – Cuchu

+0

我創建了一個自定義過濾器[*'索納塔管理員用戶號碼範圍,filter' *](HTTPS: //github.com/dianuj89/Sonata-admin-number-range-filter)前一段時間希望這會給你一個想法繼續爲你的解決方案 –

回答

0

檢查這個link和嘗試:

->add('with_open_comments', 
     'doctrine_orm_callback', 
     array('callback' => array($this, 'yourFunction'), 
      'field_type' => 'search'), 
     null, 
     array('pattern' => '^[A-Za-z0-9]{1,12}$')); 

    public function yourFunction($queryBuilder, $alias, $field, $value) 
    { 
     if (!$value['value']) { 
      return; 
     } 

     $queryBuilder->leftJoin(sprintf('%s.field', $alias), 'field') 
        ->andWhere("field LIKE :field") 
        ->setParameter('field', "%{$value['value']}%"); 

     return true; 
    } 
} 
+0

Again ..在AdminService中定義函數和函數invoque:p – Cuchu