Symfony2的:如何正确包括与枝条模板继承相结合的资产?(Symfony2: How to pr

2019-07-31 15:30发布

我目前正在开发使用Symfony的2.1.0 Web应用程序。

我已经通过读模板章的书,我想包括资产(现在,它只是一个单一的样式表)在我的网页。

我使用的是三级继承体系是书中提到的,和我的应用程序结构目前看起来是这样的:

  • 应用程序/资源/视图/
    • base.html.twig:基本模板,含有标题样式表块。
  • SRC /我的/ PageBundle /资源/视图
    • layout.html.twig:布局模板(延伸的基本模板),附加的主要样式表样式表块,并覆盖所述主体块,包括navigation.html.twig并限定内容
    • 布局admin.html.twig:与上述同样的事情,但包括导航admin.html.twig
    • SRC /我的/ PageBundle /资源/视图/主
      • 标准模板,延伸布局模板,并覆盖它的内容
    • SRC /我的/ PageBundle /资源/视图/管理
      • 管理模板。 如上同样的事情,但是扩展的管理布局模板。
  • SRC /我的/ PageBundle /资源/公/ CSS
    • main.css的:主样式表

正如你所看到的,我已经把样式表在我的包。 我不知道这是否是一个好习惯与否。

现在,事情是,在我的layout.html加入这样的:

{% block stylesheets %}
    {{ parent() }}

    <link rel="stylesheet" type="text/css" href="{{ asset('css/main.css)' }}" />
{% endblock %}

asset('css/main.css')只是链接到/css/main.css ,而./app/console assets:install在安装资产web/bundles/mypagebundle/ 。 我不喜欢的事实,这样一来,我的包的名称将是公开可见的(这可能使用户怀疑我使用Symfony的,我喜欢让我的网页的内部,那么,内部)。 是否有可能改变目录中assets:install将安装资产? 这似乎有些单调乏味到我的网站/手动安装的资产。

我也在考虑使用Assetic进行资产管理,我个人比较喜欢的可能性,自动运行如下我的脚本/样式表和他们都在同一个文件存放在一起。 不过,我听说这是不可能的,如果你有不同层次的样式表,也就是说,它不会与三级继承体系工作。 是否有可能解决呢? 此外,将利用Assetic使我从公众隐瞒我的包的名称?

Answer 1:

使用assetic将解决你所有的问题。

我听说这是不可能的,如果你有不同层次的样式表,也就是说,它不会与三级继承体系工作

你可以,但它会为每个级别一个CSS文件(就像用资产(),实际上)。

例:

布局:

{% block stylesheets %}
    {{ parent() }}
    {% stylesheets 'main.css' %}
        <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

子模板:

{% block stylesheets %}
    {{ parent() }}
    {% stylesheets 'sub.css' %}
        <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

结果:

<link rel="stylesheet" type="text/css" href="..." />
<link rel="stylesheet" type="text/css" href="..." />

可替换地子模板可以完全地覆盖样式表块,以使得仅生成一个样式表(但它是少干):

{% block stylesheets %}
    {% stylesheets 'main.css' 'sub.css' %}
        <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

结果(在生产/非调试):

<link rel="stylesheet" type="text/css" href="..." />


文章来源: Symfony2: How to properly include assets in conjunction with Twig template inheritance?