允许捆绑扩展Assetic的资产配置

3
我目前在处理这个需求:我们有一个模块化的应用程序,其中客户可以按需启用模块。每个模块都是一个bundle。现在我们有一种仪表板,我想根据安装的模块/包注入资产(JS/CSS)。此外,我想将这些文件合并成一个“dashboard.{js | css}”文件,以便我们不必为每个bundle的js和css文件发出1个请求。
对于其他文件,我们使用Twig的Assetic集成和命名资产的组合,但似乎配置密钥assetic.assets无法在bundle的扩展类中公开访问...这很可惜,因为它将是我们方法的绝佳简单方式。
我还研究了自定义配置/服务对,将资产加载器注入到assetics AssetManager服务中...但这感觉像完全过度,我认为我只是错过了什么。
有任何想法吗?
更新1
我瞄准以下配置:
assetic: # Assetic Configuration
    assets:
        dashboard_js: 
            inputs:
                - '@ModuleOneBundle/Resources/public/js/dashboard.js'
                - '@ModuleTwoBundle/Resources/public/js/dashboard_dep.js'
                - '@ModuleTwoBundle/Resources/public/js/dashboard.js'
                - '@ModuleThreeBundle/Resources/public/js/dashboard.js'

我们的客户可以决定使用哪些模块,因此我无法硬编码它们。所以我尝试使用 Configuration 类,但它们无法访问我需要的内容。我希望避免运行自定义构建脚本来创建 config.yml 文件。


嘿,我也对此很感兴趣。你找到解决方案了吗? - Vit Kos
不好意思,还没有。我仍然在使用丑陋的解决方法。 :( - althaus
1个回答

0
你可以使用Assetic配置来编译每个捆绑包所需的所有文件为一个文件。也许你的配置中有一堆这样的条目,都是自定义的,然后只调用那个包含你所需组合的文件。例如:
assetic: # Assetic Configuration
    assets:
        js1combo: 
            inputs:
                - '@AppBundle/Resources/public/js/js1.js'
                - '@AppBundle/Resources/public/js/js2.js'
        js2combo: 
            inputs:
                - '@AppBundle/Resources/public/js/js2.js'
                - '@AppBundle/Resources/public/js/js3.js'
        js3combo: 
            inputs:
                - '@AppBundle/Resources/public/js/js1.js'
                - '@AppBundle/Resources/public/js/js2.js'

在你的文件中,只需要一个js文件

{% javascripts
    'js/js2combo.js'
%}
    <script src="{{ asset_url }}"></script>
{% endjavascripts %}

如果有帮助的话,我有一个工具可以让你的编译任务变得更加容易,你可以每天运行一次。我正在尝试让更多人知道这个工具,如果有人能帮忙就太好了。这个工具让我的编程生活变得更加轻松愉快。 :-)

https://github.com/wolfdogg/symphAstman

我不完全理解你的第二个问题,但听起来你可能想要为此创建一个服务,如果你现在处理它的方式太复杂了。


我的问题是我无法在config.yml中硬编码输入文件。我将更新我的问题以展示我所追求的目标配置。 - althaus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接