3

我正在使用symfony 2.1 的官方文档来覆盖默认的 FOSUserBundle 表单。但是当我试图覆盖表单处理程序时,我遇到了这个错误:

InvalidArgumentException:服务定义“test_user.form.handler.registration”不存在。

文件列表:

<?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 是的,我读过类似的问题,但我遇到的问题不一样。

4

2 回答 2

0

仔细查看services.yml. 它说public: false,也就是说,无法从代码访问此服务(请参阅高级容器配置)。您可以执行以下两项操作之一:更改publicto的值true或删除该行,因为默认值为true.

于 2012-12-06T19:37:12.810 回答
0

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

于 2012-12-07T11:41:05.110 回答