Symfony2:为资产查找器添加新目标

时间:2013-06-08 16:38:22

标签: symfony twig assetic

在我的symfony项目中,我有一个名为Modules的软件包,其中包含许多模块,每个模块都保存在 src / ModuleBundle / Modules 目录的单独目录中,并且它们有单独的twig文件作为模板。
名为RandomImage的样本模块的文件结构

src
   ModuleBundle
       Modules
           RandomImage
               Resources
                   views
                   public

我为每个模块加载twig文件没有任何问题,但我的问题是资产:转储功能无法找到我的模块资产。
Symfony移入所有twig文件并获取 {%stylesheets%} {%javascripts%} 块中列出的所有资产文件,或者在中使用{{asset()}} 功能。
在我的研究中,我理解Symfony在两个目标中搜索和映射资产

    基本模板twig文件中列出的
  1. 资产(例如app / Resources / views / base.html.twig)
  2. 每个捆绑文件中列出的资产(例如src / myBundle / Resources / views / index.html.twig)

  3. 如何为Symfony添加新目标以从其twig文件中获取资产文件?

1 个答案:

答案 0 :(得分:1)

Assetic有一个配置供搜索的包 - 在config.yml中找到 assetic.bundles

assetic:
    bundles:

        # Defaults (all currently registered bundles):
        - FrameworkBundle
        - SecurityBundle
        - TwigBundle
        - ...

确保:

  • assetic.bundles未设置或设置为〜
  • 否则请确保您的捆绑包列在
  • 您的捆绑包已在 app / AppKernel.php
  • 中注册

为了更改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