Symfony overiding form fosuser omit getParent 给我错误
Symfony overiding form fosuser omit getParent gives me error
我正在阅读 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';
}
}
Returns :
表单的视图数据应为标量、数组或 \ArrayAccess 的实例,但它是 class CTC\Bundle\UserBundle\Entity\User 的实例。您可以通过将 "data_class" 选项设置为 "CTC\Bundle\UserBundle\Entity\User" 或添加将 class CTC\Bundle\UserBundle\Entity\User 的实例转换为标量、数组或 \ 的实例的视图转换器来避免此错误数组访问。
您可以使用setDefault
函数:
添加use语句。
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
添加功能
public function setDefaultOptions( OptionsResolverInterface $resolver )
{
$resolver->setDefaults( array(
'data_class' => 'YamilovS\MyESchoolBundle\Entity\User',
'intention' => 'registration',
));
}
首先要感谢@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
我正在阅读 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';
}
}
Returns :
表单的视图数据应为标量、数组或 \ArrayAccess 的实例,但它是 class CTC\Bundle\UserBundle\Entity\User 的实例。您可以通过将 "data_class" 选项设置为 "CTC\Bundle\UserBundle\Entity\User" 或添加将 class CTC\Bundle\UserBundle\Entity\User 的实例转换为标量、数组或 \ 的实例的视图转换器来避免此错误数组访问。
您可以使用setDefault
函数:
添加use语句。
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
添加功能
public function setDefaultOptions( OptionsResolverInterface $resolver ) { $resolver->setDefaults( array( 'data_class' => 'YamilovS\MyESchoolBundle\Entity\User', 'intention' => 'registration', )); }
首先要感谢@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