-->

Sonataadminbundle:对于同一实体多个管理部(Sonataadminbundle: M

2019-08-01 08:19发布

我有实体类Page用柱type=integer 。 当我做:

   <service id="sonata.admin.pages" class="Main\ProgramBundle\Admin\PageAdmin">
      <tag name="sonata.admin" manager_type="orm" group="dashboard" label="Pages"/>
      <argument />
      <argument>Main\ProgramBundle\Entity\Page</argument>
      <argument>SonataAdminBundle:CRUD</argument>
  </service>


   <service id="sonata.admin.groups" class="Main\ProgramBundle\Admin\GroupAdmin">
      <tag name="sonata.admin" manager_type="orm" group="stories" label="Groups"/>
      <argument />
      <argument>Main\ProgramBundle\Entity\Page</argument>
      <argument>SonataAdminBundle:CRUD</argument>
  </service>

总之,这两个部分在同一实体的工作,只是各有不同的查询和形式。

但是,什么情况是,奏鸣曲始终执行管理员/ GroupAdmin,即使我选择PageAdmin。 这该怎么做?

Answer 1:

我没有足够的声誉添加到以前的答案评论,但它缺少以下信息:

您还需要在您的管理类来定义除了$ baseRoutePattern一个独特$ baseRouteName值:

protected $baseRouteName = 'admin_vendor_bundlename_adminclassname';

protected $baseRoutePattern = 'unique-route-pattern';

你只需要做到这一点,以一类,但考虑到这样做在既能保持清楚发生了什么事情。



Answer 2:

根据您的实体名称索纳塔自动创建路线。 所以,如果你有2个管理员类,是有冲突的。 您必须配置不同的路由模式。

加入这个属性主\ ProgramBundle \管理\ GroupAdmin.php:

protected $baseRoutePattern = 'page-group';


Answer 3:

你一定找到你的解决方案,但另一种方式来做到这一点是创建一个父类和使用继承继承映射 。 然后,您可以有不同的存储库和奏鸣曲管理员不会不同的方式工作。



文章来源: Sonataadminbundle: Multiple admin section for same entity