[英]FOSUserBundle Overriding Default Forms and Getting InvalidArgumentException
[英]Overriding Default FOSUserBundle Forms: InvalidArgumentException
我正在使用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是的,我读过类似的问题,但我遇到的问题不一样。
仔细看看services.yml
中的最后一行。 它表示public: false
,也就是说,无法从代码访问此服务(请参阅高级容器配置 )。 您可以执行以下两项操作之一:将public
的值更改为true
或删除该行,因为默认值为true
。
问题很简单。 我手动创建了UnserBundle
,因此尚未创建名为DependencyInjection
文件夹。 此文件夹包含加载服务配置的php文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.