我只是阅读FOSuserbundle重写表单。它说:
如果您不想重复使用FOSUserBundle中添加的字段,则可以省略getParent方法并自行配置所有字段。
当我这样做时,它给了我错误。
任何帮助都会非常感激。
我的简单代码
namespace CTC\Bundle\UserBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class RegistrationFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// add form fields
$builder->add('userCivility',null, array('label' => 'Title'));
$builder->add('userFirstName');
}
// If you don't want to reuse the fields added in FOSUserBundle by default,
// you can omit the getParent method and configure all fields yourself.
// public function getParent()
//{
// return 'fos_user_registration';
//}
public function getName()
{
return 'ctc_user_registration';
}
}
退货:
表单的视图数据应该是标量,数组或\ ArrayAccess的实例,但是类CTC \ Bundle \ UserBundle \ Entity \ User的实例。您可以通过设置" data_class"来避免此错误。 " CTC \ Bundle \ UserBundle \ Entity \ User"的选项或者添加一个视图转换器,将类CTC \ Bundle \ UserBundle \ Entity \ User的实例转换为标量,数组或\ ArrayAccess的实例。
答案 0 :(得分:2)
您可以使用setDefault
功能:
添加使用声明。
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
添加功能
public function setDefaultOptions( OptionsResolverInterface $resolver )
{
$resolver->setDefaults( array(
'data_class' => 'YamilovS\MyESchoolBundle\Entity\User',
'intention' => 'registration',
));
}
答案 1 :(得分:0)
我想先感谢@Sheepy和@Stephan,因为你帮我找到了解决方案。
只需发布symfony 3的更新:
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'BourgMapper\TubBundle\Entity\User',
'csrf_token_id' => 'registration',
// BC for SF < 2.8
'intention' => 'registration',
));
}
享受:D