Forms Symfony2设置默认选项(选项ResolvePrinterface$resolver)
我对Symfony2很陌生。我试图开发一个网站,有人可以注册/登录。因此,我试图创建注册表表单,但它始终认为setDefaultOptions(optionsResolvePrinterface$resolver)方法存在异常 RegisterType.php:Forms Symfony2设置默认选项(选项ResolvePrinterface$resolver),forms,symfony,Forms,Symfony,我对Symfony2很陌生。我试图开发一个网站,有人可以注册/登录。因此,我试图创建注册表表单,但它始终认为setDefaultOptions(optionsResolvePrinterface$resolver)方法存在异常 RegisterType.php: <?php namespace MyappBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBu
<?php
namespace MyappBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class RegisterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options){
$builder
->add('name', TextType::class, array(
'label' => 'Your Name',
'label_attr' => array(
'attr' => array(
'class' => 'control-label'
)
),
'attr' => array(
'class' => 'form-control'
)
))
->add('email', EmailType::class, array(
'label' => 'Your Email',
'label_attr' => array(
'attr' => array(
'class' => 'control-label'
)
),
'attr' => array(
'class' => 'form-control'
)
))
->add('password',RepeatedType::class, array(
'type' => PasswordType::class, array(
'first_options' => array(
'label' => 'Your Password', array(
'label_attr' => array(
'attr' =>array(
'class'=> 'control-label'
)
)
),
'attr' => array(
'class' => 'form-control'
)
),
'second_options' => array(
'label' => 'Repeat Password', array(
'label_attr' => array(
'attr' =>array(
'class'=> 'control-label'
)
)
),
'attr' => array(
'class' => 'form-control'
)
)
)))
->add('tel', NumberType::class, array(
'label' => 'Your Telephone number',
'label_attr' => array(
'attr' => array(
'class' => 'control-label'
)
),
'attr' => array(
'class' => 'form-control'
)
))
->add('register', 'submit', array(
'attr' => array(
'class' => 'btn btn-default'
)
));
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(['data_class' => 'MyappBundle\Entity\Users']);
}
public function getName(){
return 'register';
}
}
有人能帮我吗?我总是使用configureOptions方法将实体映射到表单。所以试试这个:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
array(
'data_class' => 'MyappBundle\Entity\Users',
)
);
}
所以问题就解决了 删除RegisterType.php中的以下函数
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
array(
'data_class' => 'MyappBundle\Entity\Users',
)
);
}
并修改RegisterControler.php,如下所示
$user = new User();
$form = $this->createForm(RegisterType::class,$user);
$form->handleRequest($request);
它解决了我提到的问题。
谢谢你的帮助 非常感谢您的回答,我按照您的建议做了,清除了prod和dev中的缓存,并得到了以下错误:CRITICAL-未捕获的PHP异常Symfony\Component\options resolver\Exception\undefinedoption异常:“选项“0”不存在。定义的选项有:“操作”、“第一个\u名称”、…、“必需”、“第二个\u名称”、“第二个\u选项”、”翻译域“,”修剪“,”类型“,”验证组“,”虚拟“,”位于……\vendor\symfony\symfony\src\symfony\Component\OptionsResolver\OptionsResolver.php第760行
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
array(
'data_class' => 'MyappBundle\Entity\Users',
)
);
}
$user = new User();
$form = $this->createForm(RegisterType::class,$user);
$form->handleRequest($request);