php – Symfony2 FOSUserBundle扩展注册表单会导致重复的电子邮件验证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Symfony2 FOSUserBundle扩展注册表单会导致重复的电子邮件验证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2459字,纯文字阅读大概需要4分钟。
内容图文
![php – Symfony2 FOSUserBundle扩展注册表单会导致重复的电子邮件验证](/upload/InfoBanner/zyjiaocheng/696/5f3d71d15b274f7ba94e921135fa34ae.jpg)
我有一个自定义注册表单类型定义如下:
....
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder
->remove('username')
->add('firstName')
->add('lastName')
->add('hei', 'entity', array(
'class' => 'AcmeAcmeBundle:HigherEducationalInstitution',
'label' => 'Higher Educational Institution'
));
}
....
自定义控制器的工作原理与FOSUserbundle中的控制器非常相似,并且还会检查有效的表单
...
public function registerAsStudentAction(Request $request)
{
/** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
$formFactory = $this->get('acme.user_form_factory');
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->get('fos_user.user_manager');
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$dispatcher = $this->get('event_dispatcher');
$user = $userManager->createUser();
$user->setEnabled(true);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, new UserEvent($user, $request));
$form = $formFactory->getStudentRegistrationForm();
$form->setData($user);
if ('POST' === $request->getMethod()) {
$form->bind($request);
if ($form->isValid()) {
$event = new FormEvent($form, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$user->addRole('ROLE_STUDENT');
$userManager->updateUser($user);
if (null === $response = $event->getResponse()) {
$url = $this->get('router')->generate('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
}
}
return $this->render('AcmeUserBundle:Registration:register_student.html.twig', array('form' => $form->createView()));
}
....
当我尝试使用已经在使用的电子邮件地址注册时,我收到了电子邮件中唯一键的重复条目的学说例外.
在正常的注册表单中,我收到一个表单错误,显示电子邮件地址已被使用.
表单如何通过我的表单中的重复电子邮件地址传递验证器,但不是原始注册表单?
解决方法:
通过向AcmeBundle / Resources / config添加额外的validation.yml来修复它
Acme\UserBundle\Entity\User:
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: { fields: email, message: "This email has already been registered"}
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: emailCanonical
properties:
email:
- Email: ~
emailCanonical:
- Email: ~
plainPassword:
- Length:
min: 7
minMessage: "Your password must be at least {{ limit }} characters"
内容总结
以上是互联网集市为您收集整理的php – Symfony2 FOSUserBundle扩展注册表单会导致重复的电子邮件验证全部内容,希望文章能够帮你解决php – Symfony2 FOSUserBundle扩展注册表单会导致重复的电子邮件验证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。