覆盖FOSUserBundle控制器

时间:2013-06-04 09:02:56

标签: symfony fosuserbundle symfony-2.3

所以我读了很多关于模板的覆盖,以及在Symfony中覆盖捆绑包的内容。

我正在使用新的Symfony 2.3,我没有在较低版本的Symfony中尝试过这个。

我遵循了关于在Symfony中覆盖bundle的教程: http://symfony.com/doc/2.3/cookbook/bundles/inheritance.html

我遵循了关于覆盖FOSUserBundle控制器的教程,这实际上是一样的: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_controllers.md

我有一个名为Acme / WebBundle的软件包。

现在我做了以下事情:

  • 创建了一个名为Acme / UserBundle的新捆绑包。
  • 在此捆绑包中创建了文件AcmeUserBundle.php。

    <?php
    
    namespace Acme\UserBundle;
    
    use Symfony\Component\HttpKernel\Bundle\Bundle;
    
    class AcmeUserBundle extends Bundle
    {
        public function getParent()
        {
            return 'FOSUserBundle';
        }
    }
    
  • 创建了以下文件结构:

    -src
        -Acme
            -UserBundle
                -Controller
                    RegistrationController.php
                -Entity
                    User.php
                -Resources
                    -translations
                    -views
                AcmeUserBundle.php
    
  • 在RegistrationController.php中,我将命名空间设置为:

    namespace Acme\UserBundle\Controller;
    
  • 将FOSUserBundle的注册控制器的内容复制到我的。

  • 添加到registerAction()的开头

    die("message");
    

现在当我去注册表格,默认/注册路线时,我没有死,一切正常。它没有看到我的小孩作为一个孩子,没有被覆盖,我一直试图让它工作多年,因此我的问题在这里。

我做错了吗?

1 个答案:

答案 0 :(得分:6)

请记住,您需要在app / AppKernel.php中将任何新捆绑包添加到AppKernel :: registerBundles(),如下所示:

    $bundles = array(
        ...
        new Acme\UserBundle()
    );