Symfony2 - SonataAdmin Bundle

时间:2016-04-06 16:00:30

标签: symfony sonata-admin

您好?我正在与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方法。

1 个答案:

答案 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;
}

希望符合您的需求。