2016-04-06 5 views
1

こんにちは?私はSonataAdminバンドルで苦労しています。 私はFAQシステムを試しています。Symfony2 - SonataAdminバンドル

ここは私の実際の設定です。質問付きカテゴリエンティティ:

services: 
    sonata.admin.faq_question: 
     class: FM\AppBundle\Admin\Faq\Question 
     tags: 
      - { name: sonata.admin, manager_type: orm, group: "FAQ", label: "Questions" } 
     arguments: 
      - ~ 
      - FM\AppBundle\Entity\Faq\Question 
      - ~ 

    sonata.admin.faq_category: 
     class: FM\AppBundle\Admin\Faq\Category 
     tags: 
      - { name: sonata.admin, manager_type: orm, group: "FAQ", label: "Categories" } 
     arguments: 
      - ~ 
      - FM\AppBundle\Entity\Faq\Category 
      - ~ 

このシステムでは、2つのメニュー(質問とカテゴリ)があります。 カテゴリ別に分類された質問が表示されるメニューは1つだけです。

ソナタのデフォルト設定では可能でしょうか?

CRUDControllerのlistActionメソッドをオーバーライドする必要がありますか。

答えて

1

あなたは二つの主なものに再開することができる必要があります。

  • は、ダッシュボードから
  • オーバーライド最初のために質問のリストビュー

のデフォルトのクエリを(ADMINカテゴリーを隠しますカテゴリを非表示にする)、サービス宣言で次を変更します。

sonata.admin.faq_category: 
    # ... 
    tags: 
     - { show_in_dashboard: false, name: sonata.admin, manager_type: orm, group: "FAQ", label: "Categories" } 
    # ... 

最後に、あなたのQuestionAdminクラスに以下を追加してください:

/** 
* {@inheritDoc} 
*/ 
public function createQuery($context = 'list') 
{ 
    $query = parent::createQuery($context); 

    // Assuming the Question entity has a $categories field+association 
    $query 
     ->leftJoin($query->getRootAliases()[0].'categories', 'c') 
     ->groupBy('c.id') 

    return $query; 
} 

あなたの希望に合った希望。

関連する問題