如何在包外进行Assetic扫描Twig模板

时间:2014-08-28 09:49:55

标签: symfony twig assetic

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也检查外部模板?

2 个答案:

答案 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副本也可以。