0

Symfony2 はどこからテンプレートをロードするかを検出します: fromapp/Resourses/views/または from Bundle/Resourses/views/?

を調べる前に、別のディレクトリでテンプレートを探すためにオーバーライドする必要がありますapp/Resourses/views/

私が見つけた:Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinder

今、私はそれをオーバーライドする必要があります。どのように?

4

1 に答える 1

0

Symfony2はこのワークフローで動作します

  1. ルートへのアクセス、コントローラーへの制御の受け渡し、ビューのレンダリング(テンプレート)
  2. ビューがオーバーライドされていない場合(app/..../)、バンドルテンプレートがレンダリングされます
  3. オーバーライドがある場合は、それを取りました

したがって、問題は、テンプレートをオーバーライドするにはどうすればよいかということです。

symfony2でテンプレートをオーバーライドするには2つの異なる方法があります

  • 同じ名前のテンプレートをディレクトリに定義しますapp/resources。「同じ名前」を一緒に使用すると、バンドルの同じ構造を再現する必要があります。したがって、テンプレートがにある場合、つまり、にmyFooBundle/views/mainTemplate.html.twig新しい1つのテンプレートを作成してオーバーライドし、それapp/resources/myFooBundle/viewsを呼び出す必要があります。mainTemplate.html.twig
  • 新しいバンドルを最初から作成し、オーバーライドgetParent()するバンドル名を含む文字列を返す必要があるメソッドをオーバーライドする必要があります(myfooBundle)。これで、元のテンプレートと同じ位置に新しいテンプレートを作成すると、それが上書きされます。コントローラもオーバーライドする必要があるため、この方法はお勧めしません。
于 2012-08-29T07:17:22.437 に答える