8

天気が可能であり、Symfony 2 の SonataAdminBundle を使用して次のようにリスト ビューのフィルターを構成する方法を知りたい

エンティティ Order があり、エンティティ User を指し、エンティティ Company を指しているとします。ユーザーによるフィルタリングと会社 (ユーザーの会社) によるフィルタリングの両方のフィルターを構成したい 1 つ目は簡単です。2つ目は、私が明確にしようとしていることです。

クラス OrderAdmin では、configureDatagridFilters を次のように上書きします。

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
     $datagridMapper
         ->add('created_at')
         //... some other filters on Order fields, as usual

         // the filter on User, provided 'user', no ploblem
         ->add('user')

         // and the filter by Company 
         ->add('user.company') // this doesn't work, of course
    ;
}

会社フィルターの構文は、ソンタ ドキュメントに触発されています: http://sonata-project.org/bundles/doctrine-orm-admin/2-0/doc/reference/filter_field_definition.html

私が達成しようとしていることを意図したものではありませんが、どこを見ればよいかわかりません。

誰かがこれについて手がかりを持っていることを願っています。

ありがとう

4

2 に答える 2

16

最後に、この他の質問に導かれた答えを見つけました: SonataAdminでカスタムDataGridフィルターを作成するにはどうすればよいですか?質問に貼り付けたsonata管理ドキュメントリンクをよく読んでください。

誰かがこの問題を抱えていて、前の例を取っ​​た場合:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
   $datagridMapper

      //... whatever filter

      // and the filter by Company 

      ->add('company', 'doctrine_orm_callback', array(
            'callback'   => array($this, 'callbackFilterCompany'),
            'field_type' => 'checkbox'
            ),
    'choice', 
    array('choices' => $this -> getCompanyChoices())
;
}

メソッド getCompanyChoices は、会社 ID => 会社名 (たとえば) の連想配列を取得します。メソッド callbackFilterCompany は次のとおりです。

public function callbackFilterCompany ($queryBuilder, $alias, $field, $value)
{
    if(!is_array($value) or !array_key_exists('value', $value) 
        or empty($value['value'])){

        return;

    }

    $queryBuilder
    ->leftJoin(sprintf('%s.user', $alias), 'u')
    ->leftJoin('u.company', 'c')
    ->andWhere('c.id = :id')
    ->setParameter('id', $value['value'])
    ;

    return true;
}
于 2012-11-14T15:27:45.633 に答える
2

公式ウェブサイトで十分に文書化されています: http://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html

于 2014-06-16T09:32:15.647 に答える