2014-07-24 4 views
1
나는 그것은 다음과 같은) configureDatagridFilters (의 방법 가능 소나타 필드 목록 configureListFields()

configureListFields()에서 사용자 정의 콜백 메소드를 추가하는 방법 sonata admin?

에서 사용자 정의 콜백 메소드를 추가 할

:

protected function configureDatagridFilters(DatagridMapper $filter) 
{ 
    $filter 
     ->add('user', 'doctrine_orm_callback', array(
      'callback' => array($this, 'customMethod'), 
     )); 
} 

그러나이 configureListFields() 메소드에 가능하다?

+1

콜백이 필요한 대상은 무엇입니까? 달성하려는 일을하는 다른 방법이있을 수 있습니다. ListMapper가 콜백을 지원한다고 생각하지 않습니다. – jrdn

+0

기본 열은 사용자이고 다른 열은 예약입니다. 특정 상태로 사용자의 예약을 필터링하고 개수를 계산하려고합니다. – pico34

답변

0

doctrine_orm_callback를 사용하여 시도 올바른 : Doctrine2 ORM Admin's documentation - Reference - Filter Field Definition (2.2) - 5.5.3. Callback

제공된 예를 사용 주석에게 예약를 교체 한 후 빌더에 조건을 적용

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
     ->add('title') 
     ->add('enabled') 
     ->add('tags', null, array(), null, array('expanded' => true, 'multiple' => true)) 
     ->add('author') 
     ->add('with_open_comments', 'doctrine_orm_callback', array(
      'callback' => function($queryBuilder, $alias, $field, $value) { 
       if (!$value) { 
        return; 
       } 

       $queryBuilder->leftJoin(sprintf('%s.comments', $alias), 'c'); 
       $queryBuilder->andWhere('c.status = :status'); 
       $queryBuilder->setParameter('status', Comment::STATUS_MODERATE); 

       return true; 
      }, 
      'field_type' => 'checkbox' 
     )) 
    ; 
} 
+0

http://stackoverflow.com/questions/22932156/datagrid-filter-for-relation-object-as-text-field-insted of-drop-in-sonata – webDEVILopers

관련 문제