5

Sonata Admin Bundle で管理者を他の管理者の子として設定しようとしています。

私は2つの管理者クラスを持っています:

  • CategoryAdmin
    このクラスには次のメソッドが含まれます

    protected function configureSideMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null)
    {            
         $id = $this->getRequest()->get('id');
    
         $menu->addChild(
             $this->trans('Projects'),
             array('uri' => $this->getChild('sonata.admin.project')->generateUrl('list', array('id' => $id)))
         );
    }
    
  • ProjectAdmin
    このクラスにprotected $parentAssociationMapping = 'category';
    categoryは、ManyToOne 関連付けを表すモデル クラスのプロパティが含まれます。

CategoryAdmin のサービス構成に次の行を追加しました

calls:
    - [ addChild, ["@sonata.admin.project"]]

子管理者のルートは、この構成では生成されていません。SideMenu (トップメニュー) のリンクは/admin/project/list?childId=1&id=1

CategoryAdminwithの子の出力は次のとおりです。dump()

array:1 [▼
    "sonata.admin.project" => ProjectAdmin {#406 ▶}
]

これは、子管理者の構成が正しいように見えることを意味します。子管理者のルートが生成されない理由がわかりません。

何が問題なのか、誰かが私にヒントを与えてくれることを願っています。

4

3 に答える 3

2

次世代ソナタ コーダーへの注意: ルートが生成されていない場合は、最初に行っていないことを確認してください。

protected function configureRoutes(RouteCollection $collection)
{
    //clear all routes except given !!!
    $collection->clearExcept(array('list', 'show'));
}

2日かかりますが…

于 2016-11-06T09:42:56.343 に答える
0

管理クラスで $baseRouteName と $baseRoutePattern をオーバーライドしていますか?

その場合、Sonata は子ルートと親ルートの両方を同じ名前で生成し、親ルートが子ルートをオーバーライドします。

于 2015-07-06T15:54:05.250 に答える