2016-07-29 12 views
1

http://twig.sensiolabs.org/doc/tags/use.htmlに記載されているように、{%use%}構文を使用してベーステンプレートの子テンプレートからブロックをインポートしようとしていますが、何か問題があります。symfony3を使って "{%use%}"が枝でどのように動作しますか?

私は、私は1つを宣言し、ほとんどかのように、次のファイル

#base.html.twig 
<!DOCTYPE html> 
<html> 
    {% use ':admin/page:body.html.twig' %} 
</html> 

#admin/page/body.html.twig 
{% block contentBody %} 
    <body> 
     <p>Test Body</p> 
    </body> 
{% endblock %} 

し、最終的に

#default/index.html.twig 
{% extends base.html.twig %} 

{% block contentBody %} 
    <body> 
     <p>Test ContentBody</p> 
    </body> 
{% endblock %} 

私は最初の2つのファイルがあるマニュアルに従ってそれを理解したように持っています

#base.html.twig 
<!DOCTYPE html> 
<html> 
{% block contentBody %} 
    <body> 
     <p>Test Body</p> 
    </body> 
{% endblock %} 
</html> 

私のコントローラは、私は私がbase.htmlを交換する場合は、「テストContentBody」

をレンダリングする必要があると思うだろうが、デフォルトの最初の3つのファイルを使用して/ index.html.twig

が一緒に空白のページを生成するレンダリングします。

を予想通り、誰もが、私は「何を私に説明することができれば、それは「テストのボディを」得含めると、私はuseコマンドを交換した場合、それはそれが必要として動作し、「テストContentBody」

をレンダリングし、最後のスニペットで内容を小枝間違っているか、rで私を助けてドキュメントの中で私が見逃していることについて、私は本当に感謝しています。おかげで、事前に

PS:私もそれがドキュメントであるため一部の壊れた場合にだけ、この

#admin/page/body.html.twig 
{% block contentBody %}{% endblock %} 

などの管理/ページ/ body.html.twig でブロックを宣言しようとしましたテンプレートを使うときには、身体を持ってはいけないが、それは助けにならないと言われています。

use
#base.html.twig 
<!DOCTYPE html> 
<html> 
    {% use ':admin/page:body.html.twig' %} 
    {% block contentBody %} 
     parent() 
    {% endblock %} 
</html> 

がほとんどblock()機能でブロックを再利用するためのものです:あなたはまだあなたの基本テンプレートでそれらを定義する必要がありますのでuse

答えて

1

インポートブロックは、自動的に出力することありません。

+0

数時間の苦労の後、私は自分自身もそれを実現するようになりました。あなたが言ったことは私のために働いています。私はそれを解決としてマークしていただきありがとうございます。あなたはブロック機能でそれらを再利用することによって何を意味するのか分かりますか? – gabtzi

+0

私はそれを考え出しませんでした。後で{{block( 'contentBody')}}で{%use ...%}を呼び出すことができます – gabtzi

関連する問題