TLDR:如何在捆绑包外的Twig模板中对资产进行资产扫描?
我的登记向导很少。这些向导中的每一个都有自己的 view 目录,文件结构如下所示:
/SiteBundle/Wizard/General/Resources/views
/SiteBundle/Wizard/CountrySpecific/Resources/views
/SiteBundle/Wizard/[...several more...]/Resources/views
在config.yml中我为twig定义了这些路径,所以我可以使用 @ general_wizard / template.html.twig 路径:
twig:
paths:
"%kernel.root_dir%/../src/MyWeb/SiteBundle/Wizard/General/Resources/views": general_wizard
"%kernel.root_dir%/../src/MyWeb/SiteBundle/Wizard/CountrySpecific/Resources/views": country_specific_wizard
问题是这些模板中使用的资产(在Wizard目录中)不会使用 assetic:dump 转储。当我将视图源移动到常规SiteBundle / Resources / views时,所有资产都被正确转储。
有没有办法让Assetic也检查外部模板?
答案 0 :(得分:0)
库存assetic:dump
(SF 2.3)是不可能的,因为/Resources/views/
路径在GeneratorBundle中是硬编码的,它再次提供要处理为资产的文件列表。当然,你可以编写自己的命令,但基本上你会重新发明轮子。
我建议保持Resources/views
约定,并在下面创建子类别:
/SiteBundle/Resources/views/General
/SiteBundle/Resources/views/CountrySpecific
这会产生相同的效果,并且不需要你编写自己的命令并乱用SF2内部。
答案 1 :(得分:0)
我在项目根目录中将所有模板移动到templates
后遇到了同样的问题,因为它可能会出现在Symfony的未来版本中。
最简单的解决方案是配置配置文件中的所有资产,并在web
目录中找到输出文件,例如,将所有引导程序CSS文件放入web/css/bootstrap.css
。剩下的困难是引用具有javascripts
标记的资产不再起作用,因为这些标记必须由Assetic Bundle扫描才能工作。你必须以老式的方式做到这一点,例如通过{{ asset('css/bootstrap.js') }}
。
使用Bootstrap我遇到了使Glyphicons工作的困难,因为cssrewrite
过滤器不像以前一样工作。那时我去了Fontawesome,但包括你自己的Glyphicons副本也可以。