10

私の問題:

私は3つのテンプレートを持っています:

  • main.html.twig(メインレイアウトファイル)
  • layout.html.twig(いくつかのバンドル固有の JS タグを含むバンドル固有のレイアウト オーバーライド)
  • create.html.twig(いくつかのページ固有の JS タグも含むページ固有のテンプレート ファイル)

基本レイアウト ( ) で「javascript」というブロックを定義しmain.html.twig、それをオーバーライドします (ただし、 を呼び出し{{ parent() }}ますlayout.html.twig。これは正常に機能し、メイン テンプレート ファイルの JS タグはテンプレート内のタグの上にまだ含まれていますlayout.html.twig

次に、ファイルで同じことを行い、create.html.twig次のようにブロックをオーバーライドします。

{% block javascripts %}
    {{ parent() }}
    {% javascripts '@BundleName/Resources/public/js/application.album.uploader.js'
                   '@BundleName/Resources/public/js/jquery.uploadify.js'
                   '@BundleName/Resources/public/js/swfuploadify.js' filter='?yui_js' %}
         <script src='{{ asset_url }}' type='text/javascript'></script>
    {% endjavascripts %}
{% endblock %}

この時点で、親 ( ) の javascript ブロックをオーバーライドし、その上のテンプレートで定義されたすべてlayout.html.twigのスクリプトを含める代わりに、次のことを行います。

  • 出力の途中でタグをダンプします (私のファイルでは、HTML マークアップの最後に jQuery ライブラリのみを含めている<script>ため、エラーが発生します)main.html.twig
  • 次に、残りのスクリプトと一緒にスクリプトもダンプします(私が期待するように)

スクリプトがテンプレートの途中でダンプされる原因がわかりません。また、スクリプトがcreate.html.twig画面に 2 回ダンプされる理由についても混乱しています (1 回は作成の途中で、次に 1 回はテンプレートの途中で)。と からの残りのすべてのスクリプトmain.html.twigと一緒に下にlayout.html.twig

誰かアイデアはありますか?不明な点がある場合、またはさらに情報を提供できる場合はお知らせください。

編集:

ファイルの内容は以下...

main.html.twig: https://gist.github.com/7f29353eaca0947528ce

layout.html.twig: https://gist.github.com/734947e9118b7765715e

create.html.twig: https://gist.github.com/c60c8d5c61e00ff86912

編集2:

今朝、この問題をもう一度見てみましたが、スタイルシートに対して同じことをしているように見えます。pagescriptsmyで呼び出される新しいブロックを定義してからlayout.html.twig、そのブロックを my で使用しようとしましcreate.html.twigたが、これは同じ結果になりました。

{% block pagescripts %} 
   (scripts here) 
{% endblock}
4

2 に答える 2

2

問題が見つかりました。では、 my内でコンテンツcreate.html.twigを定義していたので、Twig はブロック内でブロックの出力をレンダリングしていたと思います。{% block javascripts %}{% block content %}javascriptscontent

{% block javascripts %}ブロックの外にコンテンツを移動すると{% block content %}、問題が修正されました。

于 2012-01-14T11:08:56.140 に答える
0

以下は main.html.twig の例です:

<body>
    {% block stylesheets %}
    {% endblock %}

    {% block jsscript %}
    {% endblock %}

    {% block content %}
    {% endblock %}
</body>

create.html.twig に

{% extends '::base.html.twig' %}

{% block jsscript %}
    my javascript files...
{% endblock %}

{% block content %}
<h1>Create</h1>

<form action="{{ path('entity_create') }}" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}
    <p>
        <button type="submit">Create</button>
    </p>
</form>

 {% endblock %}

それでも問題が解決しない場合は、ドキュメント準備機能を追加できます。

$(document).ready(function() {
   // put all your jQuery goodness in here.
 });
于 2012-01-10T13:17:23.600 に答える