私はテンプレートをapp/resources/views
in accordance with the Symfony documentationの下に保存しています。そのビューディレクトリの下に、テンプレートを整理しておくためのディレクトリが2層以上あります。私のコントローラのほとんどでテンプレートディレクトリをSymfonyコントローラに割り当てることはできますか?
、すべてのアクションが同じサブディレクトリからテンプレートをレンダリングし、例えば、app/resources/views/foo/bar
でMyController
使用テンプレート内のすべてのアクション:
class MyController extends Controller
{
public function someAction()
{
// stuff
return $this->render('foo/bar/some.html.twig');
}
public function otherAction($id)
{
// more stuff
return $this->render('foo/bar/other.html.twig'); // same dir, different template
}
}
は「symfonyの」方法はあります特定のfoo/bar
ディレクトリをコントローラーに一度だけ割り当ててください。これを繰り返す必要はありませんか?
私は現在、保護されたプロパティにディレクトリを割り当て、親がこのようなテンプレート名にそれを追加する方法をレンダリングラップすることにより、それをやっている:
protected $view_path = 'foo/bar/';
protected function render($view, array $parameters = array(), Response $response = null) {
return parent::render($this->view_path . $view, $parameters, $response);
}
それでは、私はちょうど代わりreturn $this->render('some.html.twig');
を書くことができます。
しかし、クラスやその他のアノテーションのように、ドキュメントにまだ見つからなかったクリーナービルトインの方法があると思います。誰かがより良い方法を知っていますか?
何がポイントですか?なぜこれを使用しないのですか?[バンドル構文のテンプレートの参照](http://symfony.com/doc/current/templating.html#referencing-templates-in-a-bundle)? –
私には同じことを何度も繰り返さないようにすることがポイントです。そして私はあなたがリンクしている部分を見ましたが、私のテンプレートはバンドルに含まれていません。それらはデフォルトの 'app/resources/views'の場所にあります。 –
@ Don'tPanic私はあなたの最後の解決策はすでにかなりきれいだと思います。あなたの意図を明白にします。 – Pete