首页 文章

如何在Symfony 4中覆盖第三方捆绑包的资源?

提问于
浏览
8

我使用Symfony Flex进行了新的Symfony安装,新的骨架属于下一个Symfony 4目录结构 . 接下来,I'm going to override some resources来自外部包的模板,翻译等 .

我试图为模板创建所有这些路径(开始),但没有任何作用:

  • templates/EasyAdminBundle/views/...

  • templates/Resources/EasyAdminBundle/views/...

  • app/Resources/... (只是旧结构的证明)

我应该在哪里放置我的资源文件来覆盖第三方捆绑资源?

1 回答

  • 16

    For all Symfony versions 资源路径为 %kernel.root_dir%/Resources/ . 由于新的4.0结构将 Kernel.php 放入 src/ 目录,因此它是:

    # local resources directory
    src/Resources/
    # still works this path for local templates
    src/Resources/views/ 
    
    # override resources for third-party bundles
    src/Resources/AcmeDemoBundle/views/ # legacy convention to override templates
    src/Resources/AcmeDemoBundle/translations/ # for override both translations and validations files
    src/Resources/AcmeDemoBundle/... # etc.
    

    覆盖资源的新约定(自Symfony 3.4起)

    Twig Templates :按照惯例:

    templates/bundles/AcmeDemoBundle/path/to/template.html.twig
    

    如果要升级到Symfony 3.4和4.0并且想要使用以前的模板约定,请配置自己的Twig路径:#app / config / config.yml(3.3)
    枝条:
    路径:
    #default templates目录,自3.4起
    模板:〜

    #从3.4开始覆盖包模板的目录约定
    #确保知道每个bundle的实际Twig名称空间 .
    #例如AcmeDemoBundle - > AcmeDemo:
    templates / bundles / AcmeDemoBundle:AcmeDemo

    Translations:templates/ 类似,您在项目的根目录中有 translations/ 目录(默认情况下):

    translations/bundles/AcmeDemoBundle/messages.en.yml
    

    注意: /bundles/AcmeDemoBundle/ 子目录是 not 必需的,因为翻译与bundle无关,而与域有关 . 这意味着只要它在正确的域中,您就可以覆盖翻译 .

相关问题