首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Assetic / Twig / Symfony2,我可以定义前端库吗?

问使用Assetic / Twig / Symfony2,我可以定义前端库吗?
EN

Stack Overflow用户
提问于 2012-05-31 08:40:48
回答 3查看 6K关注 0票数 4

我正在使用Symfony2,和Assetic和Twig一起使用。我有各种前端库-主干、jQuery、jQuery用户界面和引导程序。Bootstrap和jQuery UI都包含CSS和JS文件。

是否有一种方法可以定义它们需要包含的资源(包括依赖项),然后在Twig / Assetic中,将所有这些资源都包含在一个标记中?我想要的是:

代码语言:javascript
复制
// 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

我发现了几个相关的问题:

但这两种方法似乎都不涉及在config.yml中定义资源。相反,他们在base.html.twig中定义了它们,但这正是我想要避免的。

我尝试在Twig中使用use标记,方法是定义一个名为“jquery_ui”的模板,并在该块中使用{% stylesheets %}和{% javascripts %},然后在base.html.twig中使用{% use "jquery-ui.html" %}。但是,use不会导入模板,因为它有一个主体。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-31 20:39:12

虽然确实支持定义前端库,但不幸的是,不支持解决依赖关系。您还必须分别定义CSS和JavaScript。

我一直在做的是在/app/config/中创建一个名为assets.yml的单独文件,并将它包含在主配置中以保持整洁。

代码语言:javascript
复制
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%´默认在Symfony2中解析为app目录。您现在可以使用Twig模板中的资产。

代码语言:javascript
复制
{% block javascripts %}
    {% javascripts '@jquery' '@my_lib' output="js/jquery.js" %}
        <script type="text/javascript" src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

CSS文件也可以这样做。该示例还演示了为什么无法将CSS和JavaScript定义为单个资产。

票数 16
EN

Stack Overflow用户

发布于 2014-01-06 17:15:24

最简单的解决方案是将它们放在web/目录中的适当目录中,因为这是为所有Symfony包提供服务的站点的根目录。

票数 1
EN

Stack Overflow用户

发布于 2013-06-19 17:08:49

您可能需要查看Cartero,它允许您定义“资产包”(包括依赖项),然后在页面中包含这些包。

https://github.com/rotundasoftware/cartero

您需要编写一个Symfony2钩子,但这并不困难。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10830129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档