33

このパスにテンプレートを含めるとうまくいくことがわかりました

{% include 'AcmeDemoBundle:TemplateArchive:view.html.twig' with {'data': c.data} %}

これは許可されていないようですが、次のようになります。

{% include 'AcmeDemoBundle:TemplateArchive:6:view.html.twig' with {'data': c.data} %}

言い換えれば、bundle / resources /views/フォルダー内のサブフォルダー構造に分類したテンプレートに到達しようとしています。

最初の行の時点で通常の1レベルの包含よりも深くドリルすることが許可されていない場合、これらのテンプレートファイルを構造化する別の/より良い方法はありますか?

(フォルダー名「6」は、私が含めたいデータベースのテンプレートIDを表します。動的で、そのようにフォルダーにソートする必要があります...)。

テンプレートに名前を付けてみました-フォルダ「t6」ですが、違いはありません。「先頭文字のない数字」はここでは問題ではありません...

4

3 に答える 3

58

どうですか

{% include 'AcmeDemoBundle:TemplateArchive:6/view.html.twig' with {'data': c.data} %}
于 2012-10-12T08:50:41.443 に答える
6

両方が機能しています:

AcmeDemoBundle:TemplateArchive:6/view.html.twig
AcmeDemoBundle:TemplateArchive/6:view.html.twig
于 2013-12-07T02:33:49.983 に答える
5

Symfony 2.2以降、名前空間パスを使用することもできます。

{% include '@AcmeDemo/TemplateArchive/6/bar.html.twig' with {'data': c.data} %}

独自の名前空間を定義することもできます。

# app/config/config.yml
twig:
    # ...
    paths:
        "%kernel.root_dir%/../src/Acme/DemoBundle/Resources/views/TemplateArchive": TemplateArchive

そしてそれを次のように使用します:

{% include '@TemplateArchive/6/view.html.twig' with {'data': c.data} %}

これは、コントローラーでも機能します(カスタム名前空間も使用)。

// TemplateArchiveController.php
return $this->render('@TemplateArchive/6/view.html.twig', ['data' => $c.getData()]);

[ Symfonyクックブック:名前空間パス]から:

追加のボーナスとして、名前空間化された構文はより高速です。

于 2014-03-21T12:47:07.143 に答える