晚上好,
我添加了一个用于更改用户电子邮件的表单:
ChangeEmailFormType:
$builder->add('current_email', 'email', array(
'label' => 'profile.changePassOrEmail.emailLbl',
'translation_domain' => 'Startup',
'mapped' => false,
'attr' => array(
'readonly' => true,
'value' => $this->user->getEmail()
)
))
->add('new_email', 'repeated', array(
'type' => 'email',
'options' => array('translation_domain' => 'Startup'),
'first_options' => array('label' => 'profile.changePassOrEmail.newEmail'),
'second_options' => array('label' => 'profile.changePassOrEmail.newEmail2'),
'invalid_message' => 'profile.changeEmail.mismatch',
))
对于'new_email',我生成了一个Form Model Class,如下所示:
class ChangeEmail
{
/**
* @var string
* @Assert\NotBlank()
* @Assert\Email()
*/
public $new_email;
}
我的控制器如下创建表单并处理它:
*/
public function changeEmailAction(Request $request)
{
$user = $this->container->get('security.context')->getToken()->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
throw new AccessDeniedException('This user does not have access to this section.');
}
$form_email = $this->createForm(new ChangeEmailFormType($user));
$form_email->setData(new ChangeEmail());
$form_email->handleRequest($request);
if($form_email->isValid())
{
}else{
}
return $this->render(
'UserBundle:ChangeEmail:changeEmail.html.twig',
array(
'form_email' => $form_email->createView()
)
);
}
这一切都运行正常,但我的“ChangeEmail”课程出了问题。 我不知道如何在$ new_email字段中添加“@Unique”注释。 我如何检查数据库,甚至创建自定义注释,以检查是否 电子邮件已存在于我的usertable上?在注册表格中,FosUserBundle负责处理。
问候并感谢。
答案 0 :(得分:0)
解决方案:我已经编写了自己的验证器并将其绑定到new_email字段。