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

###添加getParent方法php

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

use Symfony\Component\HttpKernel\Bundle\Bundle;

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

###重写Controllerhtml

// 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来引用该控制器,才会起做用spa

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

建立和父类同样的位置资源文件便可,例如我常常会重写FOS中 layout.html.twig文件;该文件在 FOSUserBundle中的位置是 Resources/views/layout.html.twig,咱们在本身的Bundle中便可也建立Resources/views/layout.html.twig来重写覆盖,路由文件也同样code

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

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

相关文章
相关标签/搜索