5

TwigテンプレートでSymfony2.1.3のMopaBootstrapBundleを使用しています。このバンドルには、scriptsブロックを含むbase.html.twigテンプレートがあります。

{% block foot_script %}
    {# To only use a subset or add more js overwrite and copy paste this block
    To speed up page loads save a copy of jQuery in your project and override this block to include the correct path
    Otherwise the regeneration is done on every load in dev more with use_controller: true
     #}
    {% javascripts
        'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-transition.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-modal.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-dropdown.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-scrollspy.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-tab.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-tooltip.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-popover.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-alert.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-button.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-collapse.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-carousel.js'
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-typeahead.js'
        '@MopaBootstrapBundle/Resources/public/js/mopabootstrap-collection.js'
        '@MopaBootstrapBundle/Resources/public/js/mopabootstrap-subnav.js'
    %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock foot_script %}

テンプレートで次を使用して拡張しています。

{% extends 'MopaBootstrapBundle::base.html.twig' %}
{% block foot_script %}{% endblock foot_script %}

しかし、それでもBundleのbase.html.twigテンプレートを読み込もうとすると、次のようになります。

「MopaBootstrapBundle::base.html.twig」のテンプレート(「ファイルが見つかりません」@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-transition.js」)のコンパイル中に例外がスローされました。


私が見つけたのは、次のように拡張すると、次のようになります。

{% extends 'MopaBootstrapBundle::base.html.twig' %}
{% block foot_script %}
    {% javascripts
        '@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-typeahead.js'
        '@MopaBootstrapBundle/Resources/public/js/mopabootstrap-collection.js'
        '@MopaBootstrapBundle/Resources/public/js/mopabootstrap-subnav.js'
    %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock foot_script %}

typeahead.jsに注意してください

私は得る:

「MopaBootstrapBundle::base.html.twig」のテンプレート(「ファイルが見つかりません」@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-typeahead.js」)のコンパイル中に例外がスローされました。

1行だけ削除した場合:

{% extends 'MopaBootstrapBundle::base.html.twig' %}
{% block foot_script %}
    {% javascripts
        '@MopaBootstrapBundle/Resources/public/js/mopabootstrap-collection.js'
        '@MopaBootstrapBundle/Resources/public/js/mopabootstrap-subnav.js'
    %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock foot_script %}

私は得る:

「MopaBootstrapBundle::base.html.twig」のテンプレート(「ファイルが見つかりません」@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-transition.js」)のコンパイル中に例外がスローされました。

それでも、ベーステンプレートからすべてのスクリプトをロードしようとします。

* foot_script *ブロックをオーバーライドして空にし、これらのJSファイルをロードしないようにする方法についての提案はありますか?

4

1 に答える 1

1

必要なのは、拡張するのではなく、埋め込むことです。Twigのタグを使用する必要があります。MopaBootstrapBundle::base.html.twigembed

{% embed 'MopaBootstrapBundle::base.html.twig' %}
    {% block foot_script %}{% endblock foot_script %}
{% endembed %}

Twigのドキュメントから:

embedタグは、includeとextendsの動作を組み合わせたものです。includeと同じように、別のテンプレートのコンテンツを含めることができます。ただし、テンプレートを拡張する場合のように、含まれているテンプレート内で定義されているブロックをオーバーライドすることもできます。

于 2012-11-21T18:19:46.237 に答える