2

所以我读了很多关于模板的覆盖以及 Symfony 中的包的覆盖。

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

我遵循了有关在 Symfony 中覆盖捆绑包的教程: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");
    

现在,当我进入注册表时,默认 /register 路由,我没有死,一切正常。它看不到我小时候的捆绑包,没有任何东西被覆盖,我一直试图让它工作很长时间,因此我在这里提出问题。

我做错什么了吗?

4

1 回答 1

6

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

    $bundles = array(
        ...
        new Acme\UserBundle()
    );
于 2013-06-04T09:18:01.510 回答