2012-01-26 7 views
1

私はSymfony2(1.2-1.4の知識があります)を使い慣れていて、DBからオブジェクトを取得しようとしてもほとんど問題がありません。私は、次のコードブロックを持っているベーステンプレート(index.html.twig)を持っている:Symfony2の別の枝テンプレートに拡張するときにデータベースオブジェクトを取得できません

<nav> 
<ul class="menu"> 
<li><a class="active" href="index.html">Home Page</a></li> 

{% for category in categories %} 
<li><a href="{{ category.name }}">{{ category.name }}</a></li> 
{% endfor %} 

<li class="last-item"><a href="contacts.html">Contact Us</a></li> 
</ul> 
</nav> 

カテゴリをフェッチする方法がDefaultController内部にある:

​​

私はデフォルトのページにアクセスした場合、それは動作しますテンプレートを拡張する別のページ({%extend "XxxYyyBundle:Default:index.html.twig"%}を使用して)から別のページにアクセスしようとすると、次のエラーが発生します:

変数 "categories"はXxxYyyBundleには存在しません。デフォルト:index html.twig at line 53

私は、他のページのindexAction()が実行されないという唯一の結論だけで、本(%includeなど)に含まれるすべてのオプションを試しました。 DBからアイテムを取り出してメニューに含めるのはいつものようなものだと思うので、誰かがこの問題に精通していれば、私はどんな助けでも非常に感謝しています。

ありがとうございました。

答えて

1

最も簡単な方法は、レイアウトにレンダリングタグを配置し、クエリを実行してメニューフラグメントをレンダリングするコントローラを参照することです。

{% render 'SomeBundle:Menu:menu' %} 
+0

クリスさんのおかげでありがとうございました。この本の例にしたがって、実際に試しました。上記のindexActionコードでmenuAction()をデフォルトで作成し、最後にreturn $ this-> render( 'XxxYyyBundle:default:menuList.html.twig'、array( 'categories' => $ categories ));メニューコードブロックでページをリストするが、まったく同じ結果を得た。だからこそ私はエコーをメソッドの中に入れて、アプリケーションがそれに入ってくるかどうかを知っている。デフォルトからページを読み込むと、 "ArrayArray"が返されますが、インデックスから伸びる別のページから入ると、何も表示されません。 – ikleiman

+0

解決済み!インデックスからfor文を削除するのを忘れました。あなたが言ったことだけでした、ありがとう! – ikleiman

関連する問題