Symfony 2.4通过服务创建表单
在Symfony 2.4中,我想通过服务创建一个注册表。我使用了服务配置和表单组件工厂,但每次都出现以下异常: 可捕获的致命错误:传递给Symfony\Component\Form\Form::\uu构造必须是Symfony\Component\Form\FormConfigInterface的实例,给定的Bestxtech\UserBundle\Form\RegistrationType的实例 代码如下:Symfony 2.4通过服务创建表单,symfony,Symfony,在Symfony 2.4中,我想通过服务创建一个注册表。我使用了服务配置和表单组件工厂,但每次都出现以下异常: 可捕获的致命错误:传递给Symfony\Component\Form\Form::\uu构造必须是Symfony\Component\Form\FormConfigInterface的实例,给定的Bestxtech\UserBundle\Form\RegistrationType的实例 代码如下: services: bestxtech.form.type.registration:
services:
bestxtech.form.type.registration:
class: Bestxtech\UserBundle\Form\RegistrationType
arguments: [null]
tags:
- { name: form.type, alias: registration }
public: flase
bestxtech.form.registration:
factory-method: create
factory-service: form.factory
class: Symfony\Component\Form\Form
arguments: ["@bestxtech.form.type.registration"]
注册类型为
//Bestxtech\UserBundle\Form\RegistrationType
<?php
namespace Bestxtech\UserBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username')
->add('plainPassword', 'repeated', array(
'type' => 'password',
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Confirm password'),
'invalid_message' => 'Password mismatch'
))
->add('email', 'email', array('label' => 'Email address'));
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Bestxtech\UserBundle\Entity\User',
'validation_groups' => array('Registration')
));
}
public function getName()
{
return 'user';
}
}
如果有人能给我一些建议就好了,谢谢。您的表单工厂服务定义是错误的。请尝试查看以下内容: 但是。你确定这是个好主意吗?请注意,从FormFactory创建方法需要另外两个参数:$data和$options。若您按照所示定义构建表单,那个么您将无法将这些参数传递给create方法 如果我是你,我会直接使用form.factory service。像这样:
$formFactory = $container->get('form.factory');
$form = $formFactory->create($container->get('form.type.registration'));
编辑:
问题是您使用了破折号而不是下划线,请尝试以下操作:
services:
bestxtech.form.type.registration:
class: Bestxtech\UserBundle\Form\RegistrationType
arguments: [null]
tags:
- { name: form.type, alias: registration }
public: flase
bestxtech.form.registration:
factory_method: create
factory_service: form.factory
class: Symfony\Component\Form\Form
arguments: ["@bestxtech.form.type.registration"]
您的表单工厂服务定义错误。请尝试查看以下内容: 但是。你确定这是个好主意吗?请注意,从FormFactory创建方法需要另外两个参数:$data和$options。若您按照所示定义构建表单,那个么您将无法将这些参数传递给create方法 如果我是你,我会直接使用form.factory service。像这样:
$formFactory = $container->get('form.factory');
$form = $formFactory->create($container->get('form.type.registration'));
编辑:
问题是您使用了破折号而不是下划线,请尝试以下操作:
services:
bestxtech.form.type.registration:
class: Bestxtech\UserBundle\Form\RegistrationType
arguments: [null]
tags:
- { name: form.type, alias: registration }
public: flase
bestxtech.form.registration:
factory_method: create
factory_service: form.factory
class: Symfony\Component\Form\Form
arguments: ["@bestxtech.form.type.registration"]
你能告诉我一个正确的服务定义吗。我尝试这样编辑:参数:bestxtech.form.type.registration.class:bestxtech\UserBundle\form\RegistrationType服务:bestxtech.form.registration:factory方法:创建工厂服务:form.factory类:Symfony\Component\form\form参数:[%bestxtech.form.type.registration.class%]但我仍然有以下例外:传递给Symfony\Component\Form\Form的参数1::\uu构造必须是Symfony\Component\Form\FormConfigInterface的实例,字符串提供了很多参数!现在出现了一个新的错误。我正在尝试修复它。你能给我一个正确的服务定义吗?我尝试这样编辑:参数:bestxtech.form.type.registration.class:Bestxtech\UserBundle\form\RegistrationType服务:Bestxtech.form.registration:factory方法:创建工厂服务:form.factory类:Symfony\Component\form\form参数:[%Bestxtech.form.type.registration.class%]但我仍然有以下例外:传递给Symfony\Component\Form\Form的参数1::\uu构造必须是Symfony\Component\Form\FormConfigInterface的实例,字符串给出了很多错误!现在出现了一个新错误。我正在尝试修复它。