当我覆盖formType fosuserBundle时我有错误,我创建实体然后我生成表单但是当我在config.yml中更改表单fos_user的名称时我现在有这个错误。表格中的名称attributs不包含非法字符:< / p>
代码FormType:
<?php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
/**
*Class DefaultController.
*/
class CondidatType extends AbstractType
{
/**
* function buildForm when I add many attributs added by entity User.
*
* @param \Symfony\Component\Form\FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder, array $options)
{
$builder
->add('civilite', null, array('label' => 'Civilité'))
->add('nom', null, array('label' => 'Nom'))
->add('prenom', null, array('label' => 'Prénom'))
->add('pays', null, array('label' => 'Pays'))
->add('telephone', null, array('label' => 'Téléphone'))
;
}
/**
* function get Parent Form.
*
* @return string
*/
public function getParent()
{
return 'FOS\UserBundle\Form\Type\RegistrationFormType';
}
/**
* name for this form.
*
* @return string
*/
public function getBlockPrefix()
{
return 'condidat_user_registration';
}
/**
* name for this form.
*
* @return string
*/
public function getName()
{
return $this->getBlockPrefix();
}
/**
* function setDefaultOptions.
*
*@param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle/Entity/User',
));
}
}
code service.yml:
services:
condidat_user_registration:
class: AppBundle\Form\CondidatType
public: true
tags:
- { name: form.type, alias: condidat_user_registration }
config.yml:
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: AppBundle\Entity\User
from_email:
address: "testapp@testapp.com"
sender_name: "Test App"
registration:
form:
name: AppBundle\Form\CondidatType
confirmation:
enabled: true
现在如何解决此错误
答案 0 :(得分:0)
setDefaultOptions()
方法中有拼写错误。
AppBundle/Entity/User
- 这是档案路径。
AppBundle\Entity\User
- 这是一个FQCN(完全限定的类名;
在名称空间中,我们使用FQCN。
所以:
/**
* function setDefaultOptions.
*
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User',
));
}
在config.yml
的表单声明中用name替换nameregistration:
form:
type: AppBundle\Form\CondidatType