2012-11-05 3 views
5

Ich verwende MopaBootstrapBundle in Symfony 2.1.3 mit Zweig Vorlagen zu leeren außer Kraft setzen. Dieses Paket hat base.html.twig Vorlage, die Skripte Block enthält:kann nicht verlängert Zweig Schablonenblock

{% 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 %} 

Ich erweitere es in meiner Vorlage:

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

Aber es versucht noch Bundles Basis zu laden .html.twig Vorlage und ich bekomme:

Eine Ausnahme wurde während der Kompilierung von a geworfen Vorlage ("Die Datei " @MopaBootstrapBundle/Ressourcen/bootstrap/js/bootstrap-transition.js ".") kann nicht gefunden werden in "MopaBootstrapBundle :: base.html.twig".


Was ich aus ist gefunden, dass, wenn Sie es wie folgt erweitern:

{% 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 %} 

Beachten Sie die typeahead.js

ich:

Bei der Erstellung einer Vorlage wurde eine Ausnahme ausgelöst(Die Datei "@MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-typeahead.js" konnte nicht gefunden werden.) in "MopaBootstrapBundle :: base.html.twig".

Wenn ich entfernen Sie einfach eine Zeile:

{% 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 %} 

ich:

Eine Ausnahme bei der Erstellung einer Vorlage geworfen wurde ("Datei kann nicht finden " @ MopaBootstrapBundle/Resources/bootstrap/js/bootstrap-transition.js ".") in "MopaBootstrapBundle :: base.html.twig".

Es versucht immer noch, alle scripst von der Basisvorlage zu laden.

Irgendwelche Vorschläge, wie Sie * foot_script * blockieren, um es leer zu machen und diese JS-Dateien nicht zu laden?

+0

Ich denke, das Problem ist, dass zuerst das '{% javascripts%}' -Tag analysiert wird und danach die '{% block%}' -Tags. Ich weiß nicht, wie Sie das beheben können. [Diese Ausgabe von fabpot] (https://github.com/symfony/symfony-docs/issues/752) kann dir vielleicht helfen? –

+0

Ich weiß sogar nicht, ob das eine Lösung ist (ich denke nicht), aber wenn Dateien in diesem Bootstrap-Verzeichnis gefunden werden, dann funktioniert es wie erwartet. – CRONUS

+0

Als eine schnelle Lösung, vielleicht laden Sie eine leere Dummy-js-Datei aus Ihrem Bundle wie: {% erweitert 'MopaBootstrapBundle :: base.html.twig'%} {% block foot_script%} {% javascripts '@ MyBundle/Ressourcen /public/js/dummy-file.js'%} {% endblock foot_script%} – olegkhuss

Antwort

1

Was Sie wollen, ist zu einbetten die MopaBootstrapBundle::base.html.twig statt es erstreckt.Sie sollten embed Tag Zweig des verwenden:

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

Von Zweig der Dokumentation:

Der embed-Tag kombiniert das Verhalten umfassen und erstreckt. Es erlaubt Ihnen, den Inhalt einer anderen Vorlage einzuschließen, genau wie es auch der Fall ist. Sie können jedoch auch alle Blöcke überschreiben, die in der enthaltenen Vorlage definiert sind, z. B. beim Erweitern einer Vorlage.

+0

Dies funktioniert nicht (zumindest in Symfony 2.3) – Matt

+1

Sicher funktioniert dies in Symfony 2.3 – rabudde

+0

Das Embed-Tag wurde in Twig hinzugefügt 1.8. – tom10271

Verwandte Themen