23

Pagecolumnを持つエンティティクラスがあります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>

要するに、両方のセクションは、それぞれが異なるクエリとフォームを持っていることを除いて、同じエンティティで機能します。

しかし、PageAdmin を選択しても、sonata は常に Admin/GroupAdmin を実行します。これを行う方法?

4

3 に答える 3

41

前の回答にコメントを追加するのに十分な評判はありませんが、次の情報がありません。

また、管理クラスで $baseRoutePattern に加えて、一意の $baseRouteName 値を定義する必要があります。

protected $baseRouteName = 'admin_vendor_bundlename_adminclassname';

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

これを行う必要があるのは 1 つのクラスだけですが、何が起こっているのかを明確にするために、両方で行うことを検討してください。

于 2012-11-12T10:31:49.360 に答える
4

Sonata は、エンティティ名に基づいて自動的にルートを作成します。したがって、2 つの管理者クラスがある場合、競合が発生します。別のルート パターンを設定する必要があります。

このプロパティを Main\ProgramBundle\Admin\GroupAdmin.php に追加します。

protected $baseRouteName = 'page_group';
protected $baseRoutePattern = 'page-group';
于 2012-10-21T09:45:55.737 に答える
0

確かに解決策を見つけましたが、これを行う別の方法は、親クラスを作成し、継承マッピングを使用して継承することです。その後、別のリポジトリを持つことができ、sonata 管理者は別の方法で動作しません。

于 2013-06-20T21:15:48.890 に答える