1

我试图用我的包的布局覆盖第三方包的布局模板,方法是将新布局包含在 app/Resources/ 目录中,如Symfony2 书籍部分所示;但是,我收到以下异常:

“...path_to_my_app/app/Resources/FOSUserBundle/views/layout.html.twig”资源被来自“MyVendorMyBundle”派生包的资源隐藏。创建一个“...path_to_my_app/app/Resources/MyVendorMyBundle/views/layout.html.twig”文件以覆盖捆绑资源。

特别是,我想用我的包中的 FOSUserBundle 布局覆盖。我按照捆绑包文档中显示的步骤进行操作,这些步骤与 Symfony 书中的步骤没有什么不同。

此异常的原因可能是什么?我怎样才能让它工作?

我尝试将我的包的布局放在 app/Resources/MyVendorMyBundle/views/ 中,如上面的异常消息中所示,但如果我这样做,只会读取并返回 MyBundle 的布局,而不是扩展它的 FOSUserBundle 的模板。

4

1 回答 1

3

原来我之前的开发人员已将 MyBundle 设置为 FOSUserBundle 的子项,如文档中所示(我没有注意到......):

// src/Acme/UserBundle/AcmeUserBundle.php
namespace Acme\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class AcmeUserBundle extends Bundle
{
    public function getParent()
    {
        return 'FOSUserBundle';
    }
}

以上显然与(隐藏)在 app/Resources/FOSUserBundle/views/ 文件夹中重新定义的布局模板产生了冲突。我刚刚从上面显示的包类中删除了 getParent() 方法来解决问题。

于 2013-06-12T21:55:23.700 回答