【问题标题】:Symfony inheritance isn't working EasyAdmin bundleSymfony 继承不起作用 EasyAdmin 包
【发布时间】:2016-06-22 07:12:22
【问题描述】:

我正在使用带有 EasyAdminBundle 的 symfony 3

我创建了一个名为 EasyAdminBundle 的子 AdminBundle 的新包(用于覆盖)

namespace AdminBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AdminBundle extends Bundle {

    public function getParent(){

        return 'EasyAdminBundle';
    }

}

我重写了控制器中的一个方法,它工作正常,但是当我试图重写一个树枝模板时,它不起作用......

我在AdminBundle/Resources/views/default/list.html.twig中创建了我的树枝文件

原文在vendor/javiereguiluz/easyadmin-bundle/Resources/views/default/list.html.twig

如何解决? (我多次清除缓存...)

【问题讨论】:

  • 请发布您说要覆盖的树枝代码。

标签: inheritance twig bundle symfony symfony2-easyadmin


【解决方案1】:

EasyAdminBundle:default:index.html.twig 被渲染时,Symfony 实际上在两个不同的位置寻找模板:

  1. app/Resources/EasyAdminBundle/views/default/index.html.twig
  2. src/AdminBundle/Resources/views/default/index.html.twig

您的方法是执行此操作的第二种选择,但是

仅当您使用 @FOSUserBundle/Resources/config/routing/security.xml 方法引用资源时,资源的覆盖才有效。如果您在不使用 @BundleName 快捷方式的情况下引用资源,则无法以这种方式覆盖它们。 [See Doc]

要覆盖捆绑包模板,只需将index.html.twig 模板从捆绑包复制到app/Resources/EasyAdminBundle/views/default/index.html.twigapp/Resources/EasyAdminBundle 目录将不存在,因此您需要创建它)。 [See Doc]

如果您在新位置添加模板,您可能需要清除缓存 (php bin/console cache:clear),即使您处于调试模式。

【讨论】:

  • 嗯,所以 EasyAdmin 在内部不使用 @FOSUserBundle/Resources/config/routing/security.xml 方法处理资源,而是使用 @BundleName 方法,所以我不能从子包中覆盖但是我必须将文件放在应用程序/资源中,对吗?
  • 我不确定 EasyAdmin 内部是否不使用 @BundleName 处理资源,但是是的,将文件放在 app/Resources 中总是有效的。
猜你喜欢
  • 2018-12-31
  • 2023-03-11
  • 2018-05-24
  • 2015-03-04
  • 2012-06-04
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
相关资源
最近更新 更多