我能够覆盖 FosUserBundle 模板和控制器,但不能覆盖注册表单验证器。但似乎验证被禁用。因为即使原始验证文件说密码需要 8 个字符,我也可以使用一个字符的密码注册一个新用户,但我不应该这样做。
配置.yml:
fos_user:
registration:
form:
type: loic\UserBundle\Form\RegistrationType
name: form_register_new
validation_groups: [Registration, Default]
confirmation:
enabled: false
template: FOSUserBundle:Registration:email.txt.twig
注册类型.php
<?php
namespace loic\UserBundle\Form;
use KMS\FroalaEditorBundle\Form\Type\FroalaEditorType;
use loic\EditorBundle\Form\EditorType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use loic\ContentBundle\loicContentBundle;
use loic\ContentBundle\Entity\Content;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('plainPassword', RepeatedType::class, array(
'type' => PasswordType::class,
'options' => array(
'translation_domain' => 'FOSUserBundle',
'attr' => array(
'autocomplete' => 'new-password',
),
),
'first_options' => array('label' => 'Mot de passe'),
'second_options' => array('label' => 'Confirmer le mot de passe'),
'invalid_message' => 'fos_user.password.mismatch',
))
->add('email',null,array(
'data' => time().'@gmail.com',
'label' => 'E-mail'
));
}
public function getName()
{
return $this->getBlockPrefix ();
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
"allow_extra_fields" => true
));
}
}
感谢帮助!