私たちは 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()] を使用するとうまくいきました。私の悪い。