随着Assetic /嫩枝/ Symfony2中,我可以定义前端库?(With Assetic /

2019-06-25 00:11发布

我使用Symfony2中,与Assetic和嫩枝。 我有不同的前端库 - 骨干,jQuery的,jQuery UI的,和引导。 这两个引导和jQuery UI包括CSS和JS文件。

有没有办法,我可以定义他们需要包括(包括依赖)的资源,然后在嫩枝/ Assetic只包括那些资源一个标签的方法吗? 我想看看有是这样的:

// config.yml <!-- DOES NOT WORK -->
assetic:
  resources:
    jquery:
      js: /filepath/to/jquery.js
    jquery_ui:
      dependencies: jquery
      css: /filepath/to/jqueryui.css
      js: /filepath/to/jqueryui.js
    less:
      js: /filepath/to/less.js
    bootstrap:
      dependencies: { less, jquery }
      js: /filepath/to/bootstrap.js
      css: /filepath/to/bootstrap.css
    backbone:
      dependencies: { jquery }
      js: { /filepath/to/underscore.js, /filepath/to/backbone.js }

// view.html.twig
{% use jquery_ui %}
{% use bootstrap %} 

// outputs all js and css for jQuery, jQueryUI, Less, Backbone, and Bootstrap

我发现一对夫妇的相关问题:

  • 如何定义Symfony的2阳明或XML配置文件Assetic资源?
  • Symfony2的Assetic +桂枝模板的JavaScript继承

但也似乎涉及在config.yml定义的资源。 相反,他们定义他们base.html.twig但是这就是我试图避免的。

我试着用use标签的枝条,通过定义一个名为“jquery_ui”模板,并使用{% stylesheets %}{% javascripts %}在该块,然后在base.html.twig{% use "jquery-ui.html" %} 。 然而, use不会导入模板,因为它有一个身体。

Answer 1:

虽然的确有定义前端库的支持,有不幸的是依赖解析的支持。 你还必须单独定义CSS和JavaScript。

我一直在做什么,是创建一个单独的文件/app/config/名为assets.yml和包括它的主要配置,以保持干净的东西。

assetic:
    assets:
        jquery:
            inputs:
                - '%kernel.root_dir%/Resources/public/js/jquery.js'
                - '%kernel.root_dir%/Resources/public/js/jquery-ui.js'
        my_lib:
            inputs:
                - '%kernel.root_dir%/Resources/public/js/my-custom-lib.js'
                - ...

请注意,'%kernel.root_dir%“解析为app默认情况下,Symfony2的目录。 您现在可以使用的资产的嫩枝模板。

{% block javascripts %}
    {% javascripts '@jquery' '@my_lib' output="js/jquery.js" %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

这同样可以为CSS文件来完成。 这个例子也说明了为什么它不是可以定义CSS和JavaScript作为一个单一的资产。



Answer 2:

最简单的办法是把他们在适当的目录在web /目录,因为这是你的网站,送达您所有的Symfony束的根源。



Answer 3:

你可能想看看Cartero,它允许您定义“资产包”,包括相关性,然后在您的网页中的包。

https://github.com/rotundasoftware/cartero

您需要编写一个Symfony2的挂钩,但是这将不会太困难。



文章来源: With Assetic / Twig / Symfony2, can I define front end libraries?