如何继承和重写一个Bundle的某部分

###添加getParent方法

// src/UserBundle/UserBundle.php 
namespace UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class UserBundle extends Bundle
{
    public function getParent()
    {
        return 'FOSUserBundle'; #这里即是你需要重写某Bundle的名称
    }
}

###重写Controller

// src/UserBundle/Controller/RegistrationController.php
namespace UserBundle\Controller;

use FOS\UserBundle\Controller\RegistrationController as BaseController;

class RegistrationController extends BaseController//继承需要重写Controller
{
    public function registerAction()
    {
        //调用父类方法;也可以不调用完全使用自己的逻辑
        $response = parent::registerAction();

        // 可以做一些自己的事情
        return $response;
    }
}

这种方式只会在你的模板或路由中使用标准的写法FOSUserBundle:Registration:register来引用该控制器,才会起作用

###重写资源:模板和路由等

创建和父类一样的位置资源文件即可,例如我经常会重写FOS中 layout.html.twig文件;该文件在 FOSUserBundle中的位置是 Resources/views/layout.html.twig,我们在自己的Bundle中即可也创建Resources/views/layout.html.twig来重写覆盖,路由文件也一样

重写资源仅仅当你引用该资源的时候使用完整的路径的方法的时候起作用(FOSUserBundle/Resources/config/routing/security.xml);如果你使用@BundleName快捷方式来引用资源是不起作用的;

###注意 翻译和验证文件不是通过这种方式来重写覆盖的

转载于:https://my.oschina.net/u/729139/blog/542507

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值