1

私たちは Symfony2 を使用して旅行 Web サイトを開発しています。私は現在、メニューに行き詰まっています。現在のデザインは、次のように編成された複数レベルのメニューです。continents-> countries -> regions.国のサブメニューは大陸ごとにグループ化され、国ごとに地域がグループ化されています。Knp メニュー バンドルを使用しています。各メニュー項目を手動で生成したくないため、foreach ループを使用してサブメニューを動的に生成したいと考えています。このために、文字列変数を配列キーとして使用する必要がありますが、これは機能しません... エンティティ Continent および Country には、 getSlug().Clearlyを返す toString メソッドがあります 。$menu['south-america']$menu[$continent]

エラーメッセージは次のとおりです。

テンプレートのレンダリング中に例外がスローされました

("Warning: Illegal offset type in isset or empty in ***********\vendor
\knplabs\knp-menu\src\Knp\Menu\MenuItem.php line 346") in SiteBundle::layout.html.twig at line 11.

メニュービルダーのコードは次のとおりです。

public function createMenu(RequestStack $requestStack, EntityManager $em)
{
    $menu = $this->factory->createItem('root');

    $menu->addChild('my_account', array(
            'label' => 'My Account'
        ));

   $continents = $em->getRepository('CountryBundle:Continent')->getContinents();
   foreach ($continents as $continent){

       $menu->addChild( $continent, array(
               'label'=> $continent->getName(),
           ));
       $countries = $em->getRepository('CountryBundle:Country')->getCountriesByContinent($continent);
        foreach($countries as $country)
           $menu[$continent]->addChild($country, array(
                   'label'=> $country->getName(),
               ));
   }

ご提案いただきありがとうございます。

見つかった解決策:

投稿してから数分後に解決策が表示されたため、この質問を投稿するのが少し速すぎた可能性があります(何時間ものテストの後)配列キーとして使用する場合。$menu[$continent->getSlug()] を使用するとうまくいきました。私の悪い。

4

0 に答える 0