我目前正在努力满足这一要求:我们有一个模块化的应用程序,其中模块可以由客户按需启用。每个模块都是一个包。现在我们已经有了某种仪表板,我希望根据安装的模块/软件包注入资产(JS / CSS)。另外,我想将这些文件合并到一个"仪表板中。{js | css}"文件,以便我们不会为每个捆绑js和css文件提供1个请求。
对于其他文件,我们使用Twig的Assetic集成和命名资产的组合,但似乎配置键assetic.assets
可以在一个包中公开访问扩展类...这是一个遗憾,因为它是我们方法的一个很棒的简单方法。
我还调查了一个自定义配置/服务对,将资产加载器注入资产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
文件。
答案 0 :(得分:0)
您可以使用资产配置来编译一个文件,其中包含每个捆绑包的所有needes。也许你可以在你的配置中有一堆这些条目,所有这些都是自定义的,然后只调用你需要组合的一个文件。 e.g。
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
我完全不理解你的第二个问题,但听起来你可能想要为它做一个服务,如果它太过于涉及你必须这样做了。