您好?我正在与SonataAdmin Bundle斗争。 我正在尝试建立常见问题解答系统。
这是我的实际配置。使用问题类别实体:
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
- ~
使用这个系统,我有一个两个菜单(问题和类别)。 我想只有一个菜单,我看到按类别分组的问题。
您认为使用Sonata的默认配置是否可行?
我是否需要覆盖CRUDController中的listAction方法。
答案 0 :(得分:1)
您需要的东西可以在两件主要内容中恢复:
对于第一个(隐藏类别),请在服务声明中更改以下内容:
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;
}
希望符合您的需求。