2013-03-29 27 views
2

我正在开发一个合并主题系统的symfony2项目。由于这个系统的限制,我不得不在include文件中定义javascripts和stylesheets块,然后包含在主题的布局分支文件中。的结构如下:小枝/资产块继承 - 无法添加到父项的初始块()

应用程序/资源/主题/ {THEME_NAME} /views/layout.html.twig

... code ... 
{% include '::theme_assets.html.twig; %} 

应用程序/资源/视图/ theme_assets.html.twig

{% block stylesheets %} 
    {% stylesheets 
     'stylesheet.css' 
     'stylesheet2.css' 
     filter='cssrewrite' 
     output='css/packed/layout_theme.css' 
    %} 
    <link type="text/css" rel="stylesheet" href="{{ asset_url }}" /> 
    {% endstylesheets %} 
{% endblock %} 

{% block javascripts%} 
    {# same as stylesheets #} 
{% endblock %} 

然后,我希望能够在单个页面上面设置的初始块内包含额外的css/js文件,例如

的src /布拉赫/ BlahBundle /资源/视图/ subpage.html.twig

{% extends 'BlahBundle::layout.html.twig' %} {# the theme system works out that there is a theme overrde for this file #} 

{% block body %} 
    ...body... 
{% endblock %} 

{% block stylesheets %} 
    {{ parent() }} {# should include the initial block #} 
    <link rel="stylesheet" type="text/css" href="{{ asset('/bundles/blah/css/additional1.css') }}" /> 
    <link rel="stylesheet" type="text/css" href="{{ asset('/bundles/blah/css/additional2.css') }}" /> 
{% endblock %} 

出于某种原因,这些额外的样式表时,我认为 “subpage.html.twig” 不包括在内。我高度怀疑问题在于我的实施,但我不确定我可以尝试什么!

回答

0

我得到了类似的问题,但我所做的和工作是这样的: 我使用layout.html.twig作为我的所有网页的基础。 (所有内容都包含此布局)。它有: {% block stylesheets %}... {% endblock %}和NO {% stylesheets ... {% endstylesheets %}此外。 当我想为单个页面添加一个新的样式表时,我再次调用样式表块,就像通过调用父类一样,Sf2将CSS添加到最后。 但我知道这个解决方案的一件事是资产倾销不会允许,因为我猜。