2016-11-17 5 views
0

私はVendorDeliveryBundleというサードパーティのバンドルを持っています。symfonyバンドル継承とtwigテンプレートオーバーライド

私は私は私のアプリの小枝テンプレートの一つに、この構文で呼び出され、その小枝テンプレートのいずれかを上書きしたい:このように
{% include '@VendorDelivery/Frontend/Booking/_delivery.html.twig' with { 'form': form } only %} それは動作しますが、ベンダーのテンプレートが呼び出されます。

しかし、私は(https://symfony.com/doc/2.8/bundles/inheritance.htmlで説明したように)AppKernelでオーバーライドバンドルを登録することで、このテンプレートを上書きすると、作成することで、必要であれば: App/DeliveryBundle/Resources/views/Frontend/Booking/_delivery.html.twig このテンプレートは、ベンダーのテンプレートを上書きしません。

しかし、代わりにこの構文を使用すると、 {% include 'VendorDeliveryBundle:Frontend:Booking/_delivery.html.twig' with { 'form': form } only %} テンプレートが上書きされます。

@構文が期待どおりに機能しないようです。それはバグやこのsymfonyのドキュメントhttps://symfony.com/doc/2.8/bundles/inheritance.htmlを考慮し、通常の動作がある場合

はので、私は思ったんだけど:

あなたは、@のFOSUserBundleとリソースを参照する場合、リソースのオーバーライドのみ機能

/リソース/設定/ routing/security.xmlメソッド。 @BundleNameショートカットを使用せずにリソースを参照すると、このように上書きすることはできません。小枝の構文で

おかげで、

答えて

2

@は、 "名前空間のパス" と呼ばれる機能です。 (documentation

{% include 'Bundle:Folder:template' %}の機能を使用すると、{% include '@Bundle\Folder\template' %}と同じではありません。サンプルについて

、あなたがオーバーライドした場合fosubバンドル:また

{% include '@FOSUser/Security/login.html.twig' %} {# Will be fosub template #} 
{% include '@User/Security/login.html.twig' %} {# Will be overrided template #} 
{% include 'FOSUserBundle:Security:login.html.twig' %} {# Also will be overrided template #} 

、私はあなたが(などのコントローラー、リスナー、などのグローバル機能なし)のみのテンプレートを上書きしたい場合は、追加することができますことを、追加したいですあなたのアプリディレクトリにテンプレート。これはよく説明されているdocumentation