在我的symfony项目中,我有一个名为Modules的软件包,其中包含许多模块,每个模块都保存在 src / ModuleBundle / Modules 目录的单独目录中,并且它们有单独的twig文件作为模板。
名为RandomImage的样本模块的文件结构
src
ModuleBundle
Modules
RandomImage
Resources
views
public
我为每个模块加载twig文件没有任何问题,但我的问题是资产:转储功能无法找到我的模块资产。
Symfony移入所有twig文件并获取 {%stylesheets%} 和 {%javascripts%} 块中列出的所有资产文件,或者在中使用{{asset()}} 功能。
在我的研究中,我理解Symfony在两个目标中搜索和映射资产
如何为Symfony添加新目标以从其twig文件中获取资产文件?
答案 0 :(得分:1)
Assetic有一个配置供搜索的包 - 在config.yml中找到 assetic.bundles :
assetic:
bundles:
# Defaults (all currently registered bundles):
- FrameworkBundle
- SecurityBundle
- TwigBundle
- ...
确保:
为了更改Symfony / AsseticBundle扩展的默认资源(即通过bundle继承)
vendor\symfony\assetic-bundle\Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler\TemplateResourcesPass.php
默认的Resources / views文件夹结构可以在第50-70行找到(从Symfony 2.3开始)
$container->getParameter('kernel.root_dir').'/Resources/'.$bundleName.'/views',
// ...
$bundleDirName.'/Resources/views',
// ...
new DirectoryResourceDefinition('', $engine, array($container->getParameter('kernel.root_dir').'/Resources/views'))
ResourceDefinitions正在CompilerPass中加载 - 阅读更多相关信息here。