我正在尝试使用我的包的布局覆盖第三方包的布局模板,方法是将新布局包含在Symfony2 book section中指示的app / Resources /目录中;但是,我得到以下例外:
“... path_to_my_app / app / Resources / FOSUserBundle / views / layout.html.twig”资源被“MyVendorMyBundle”派生包中的资源隐藏。创建“... path_to_my_app / app / Resources / MyVendorMyBundle / views / layout.html.twig”文件以覆盖包资源。
特别是,我想用我的包中的那个覆盖FOSUserBundle布局。我按照bundle's documentation中显示的步骤进行了操作,这些步骤与Symfony书中的步骤没有什么不同。
这个例外可能是什么原因?我怎样才能让它发挥作用?
我尝试将我的bundle的布局放在app / Resources / MyVendorMyBundle / views /中,如上面的异常消息所示,但如果我这样做,只会读取并返回MyBundle的布局,而不是FOSUserBundle的模板。扩展它。
答案 0 :(得分:3)
原来我之前的开发人员将MyBundle设置为FOSUserBundle的孩子为shown in the documentation(我没有注意到......):
// 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 /文件夹中的(隐藏)重新定义的布局模板存在冲突。我刚从上面显示的bundle类中删除了getParent()方法来解决问题。