2012-12-06 107 views
3

我使用official documentation for symfony 2.1来覆盖默认的FOSUserBundle表单。但是,当我试图重写表单处理程序,我得到这个错误:覆盖默认的FOSUserBundle表单:InvalidArgumentException

InvalidArgumentException: The service definition "test_user.form.handler.registration" does not exist.

文件清单:

<?php 

// src/Test/UserBundle/Form/Handler/RegistrationFormHandler.php 

namespace Test\UserBundle\Form\Handler; 

use FOS\UserBundle\Form\Handler\RegistrationFormHandler as BaseHandler; 
use FOS\UserBundle\Model\UserInterface; 

class RegistrationFormHandler extends BaseHandler 
{ 
    protected function onSuccess(UserInterface $user, $confirmation) 
    { 
     // logic here... 
     parent::onSuccess($user, $confirmation); 
    } 
} 

= - = - = - = - =

# src/Test/UserBundle/Resources/config/services.yml 
services: 
    test_user.form.handler.registration: 
     class: Test\UserBundle\Form\Handler\RegistrationFormHandler 
     arguments: ["@fos_user.registration.form", "@request", "@fos_user.user_manager", "@fos_user.mailer", "@fos_user.util.token_generator"] 
     scope: request 
     public: false 

= - = - = - = - =

# app/config/config.yml 
fos_user: 
    db_driver: orm 
    firewall_name: dev 
    user_class: Test\UserBundle\Entity\User 
    registration: 
     form: 
      handler: test_user.form.handler.registration 

PS是的,我已经阅读过类似的问题,但并不是我有同样的问题。

+0

问题很简单。我手动创建了我的'UnserBundle',因此没有创建名为'DependencyInjection'的文件夹。这个文件夹包含php文件,它加载了服务配置。 – Hast

回答

0

问题很简单。我手动创建了我的UnserBundle,因此尚未创建名称为DependencyInjection的文件夹。这个文件夹包含php文件,它加载了服务配置。

0

仔细看看services.yml的最后一行。它表示public: false,即该代码无法访问此服务(请参阅Advanced Container Configuration)。您可以执行以下两项操作之一:将public的值更改为true或者删除该行,因为默认值为true

+0

不,它适用于'public:false'。顺便说一下,我明白了。看看我自己的答案。 – Hast