4

ウィジェットを別のページに含めて、このサブテンプレートで定義された関連スクリプトをページの最後に自動的に追加し、複数のインクルードを実行する必要がないようにしたいと考えています。

block含まれているサブテンプレートでa を使用し、 base.html.twigで定義されているブロックにスクリプトを追加して、これらのスクリプトがページの最後に読み込まれるようにしました。

base.html.twig

<html><body>
   <div>{% block content %}{% endblock %}</div>
   <aside>{% block aside %}{% endblock %}</aside>
   ...
   {% block javascripts %}
      <script src="..."></script>
      <script src="..."></script>
      ...
   {% endblock %}
   {% block widgetInlineScript %}{% endblock %}
</body></html>

base.html.twigを拡張し、そのように見えるテンプレート profile.html.twigがあります。

{% extends '::base.html.twig' %}
{% block content %}
   ...
{% endblock %}
{% block aside %}{% include 'ApplicationRcBundle:include:promo/adSpace_topRight.html.twig' %}{% endblock %}

include/widget.html.twigでは{% block javascripts %}{{ parent() }} ...、それ自体は何も拡張しないため使用できませparent()んでした。代わりに、特定のブロックを使用しました。

{% block widgetInlineScript %}
<script type="text/javascript" id="widgetInlineScript" >
...
</script>
{% endblock %}

{% block widgetInlineScript %}Twig はテンプレートを適切にコンパイルしますが、ページの最後ではなくウィジェットの直後にスクリプトを DOM にレンダリングします。

block含まれているサブテンプレート内でa を使用することは可能ですか? ありがとう

4

1 に答える 1

2

今日も同様の質問に答えました:

複数のサブテンプレートからコンテンツをブロックに追加

基本的に、「水平再利用」手法を使用してブロックを作成しました。

{% use "blocks.html" with sidebar as base_sidebar %}

ここでドキュメントを確認できます:

http://twig.sensiolabs.org/doc/tags/use.html

于 2013-12-04T17:01:00.200 に答える