Symfony2中:如何分享束之间的JS库和CSS(Symfony2: How to share j

2019-06-25 17:55发布

我有不同的包:MainBundle(首页),SecurityBundle(登录,注册),MessageBundle(信息系统),ShopBundle。

我也跟着三个阶段的布局模式(:: base.html.twig,AcmeMainBundle :: layout.html.twig,AcmeMainBundle:默认:index.html.twig)。

但是我有问题通过应用具有共同的js libaries(例如jquery的)并限定base.css(它设置一些基类,背景,字体等)

因此,最新最好的方法来使用共享CSS和JS withouth的有失去assetic支持?

一个想法是创建持有全球所有js和css以及一些布局文件CommonBundle,但我不认为这是处理最好的办法...

Answer 1:

如果您希望将所有包间有着共同的资产,最好的选择是将它们放置在app/Resources/public目录。 例如:

app/Resources/Public
|-- css
|   `-- base.css
|-- js
|   `-- jquery.js

然后你就可以在你的布局如下引用它们:

{% block stylesheets %}
  {% stylesheets '../app/Resources/public/css/*' %}
    <link rel="stylesheet" type="text/css" charset="UTF-8" media="all" href="{{ asset_url }}"/>
  {% endstylesheets %}
{% endblock %}

{% block javascripts %}
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  {% javascripts '../app/Resources/public/js/*' %}
    <script type="text/javascript" src="{{ asset_url }}"></script>
  {% endjavascripts %}
{% endblock %}

注:正如你所看到的,对于像jQuery的公共库,最好的选择仍然是使用在谷歌托管常见缓存版本。 这种做法可以加速你的应用程序响应时间。



Answer 2:

使用的是最新的Symfony的版本(2.5),我已经看到了fsenart的回应并没有我的情况下工作。 相反,我把公众文件夹共享内容到网络文件夹:

web/public
  --js
  --css

然后使用它的主要布局在下面的代码工作:

{% block javascripts %}
    {% javascripts 'public/js/*' %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

但是,对于这个工作不要忘记在子布局的使用JavaScript块时调用父枝杈()函数。



文章来源: Symfony2: How to share js libs and css between bundles