2012-10-10 15 views
19

エンティティクラスPageとカラムtype=integerがあります。要するに、両方のセクションは同じエンティティで動作しますが、それぞれ異なるクエリとフォームがあります。Sonataadminbundle:同じエンティティの複数の管理セクション

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

答えて

31

私は前の回答にコメントを追加するのに十分な評判を持っていないが、それは、以下の情報が欠落しています。

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

protected $baseRouteName = 'admin_vendor_bundlename_adminclassname'; 

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

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

+3

このエンティティを別の管理者に追加すると、まだ問題が発生します。ソナタは登録された管理者が多数いることを知らせるエラーを引き起こします。これは修正されています'admin_code' => 'sonata.product.admin.product'を追加機能に追加すると、これは管理者が特に使用するソナタを通知します。 – 11mb

+0

ありがとう! @ 11mb私はショーで問題を抱えていました。 '' ' - > add( 'someProperty'、null、array( 'admin_code' => 'some.service.admin、id'))' '' – Cassiano

4

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

メイン\ ProgramBundle \管理\ GroupAdmin.phpにこのプロパティを追加します。

protected $baseRoutePattern = 'page-group'; 
+0

PageAdminとGroupAdminの両方にこれらのプロパティ(異なる、ofcourse)を配置しても、両方のurlは 'admin/page-group/list'です:( – Zeljko

+0

このプロパティを両方のクラスに入れないでください – pulzarraider

+2

私が試した最初のことは、あなたが言った通りです;プロパティを1つの管理クラスに入れるだけです。 – Zeljko

-1

確かにあなたの解決策が見つかりましたが、これを行う別の方法は、親クラスを作成し、inheritance mappingを継承することです。あなたは別のリポジトリを持つことができ、ソナタの管理者は違った動作をしません。

+1

:) – ForceMagic

+0

私は元のものを拡張したエンティティで最初に試しましたが、同じテーブルを2回作成しようとすると 'console doctrine:schema:update'が失敗します。 DB内に2つのテーブル。 –

関連する問題