我的ExampleUserBundle
扩展了FOSUserBundle
。我像这样重写 RegistrationFormType
:
<?php
// Example/UserBundle/Form/Type/RegistrationFormType.php
namespace Example\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilderInterface $builder, array $options) {
parent::buildForm($builder, $options);
$builder->remove('username');
}
public function getName() {
return 'example_user_registration';
}
}
服务声明:
// Example/UserBundle/Ressources/Config/services.yml
services:
example_user.registration.form.type:
class: Example\UserBundle\Form\Type\RegistrationFormType
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: example_user_registration }
在/app/config/config.yml 中:
fos_user:
db_driver: orm
firewall_name: main
user_class: Example\UserBundle\Entity\User
registration:
form:
type: example_user_registration
当我使用此表单创建新的User
时,FOSUserBundle
的基本验证规则不会覆盖。 (电子邮件 -> 唯一;密码 -> 超过 3 个字符;...)。
最佳答案
基本的解决方案是为注册表指定不同的验证组。
该解决方案对我有用:Validation of a form - I'm getting the labels two times
关于validation - 如何覆盖 FOSUserBundle 的验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19183538/