【发布时间】:2016-12-17 18:51:00
【问题描述】:
我设置了一个表单生成器来创建用户信息表单:
$form = $this->createFormBuilder($userSettings)
->add('newName', TextType::class, array(
'required' => false,
'label' => "Change UserName",
'attr' => array(
'placeholder' => $userData[0]->getUsername()
)
))
->add('newMail', TextType::class, array(
'required' => false,
'label' => "Change Email",
'attr' => array(
'placeholder' => $userData[0]->getEmail()
)
))
->add('newPassword', PasswordType::class, array(
'required' => false,
'label' => "Change Password"
))
->add('currentPassword', PasswordType::class, array(
'label' => "Current Password"
))
->add('save', SubmitType::class, array('label' => 'Update Information!'))
->getForm();
现在提交表单后,我有一个处理程序来检查邮件或用户名是否尚未被占用
// Check if name or mail not occupied
if($user_manager->findUserByEmail($mail)){
}
elseif($user_manager->findUserByUsername($name)){
}
我的目标是,在邮件/用户名被占用时再次打印表单,只是这一次,占用的值会有一个占位符,说 “THIS VALUE IS OCCUPIED”
现在我尝试在 if 语句中添加另一个“添加”,例如
$form->add('newMail', TextType::class, array(
'required' => false,
'label' => "Change Email",
'attr' => array(
'placeholder' => "EMAIL TAKEN"
)
));
不幸的是,这给我一个错误提示
您不能将子级添加到提交的表单中
现在这是我的问题: 有没有好的和正确的方法呢?
B 端:
我可以像 ie 一样触发浏览器默认验证吗?在 chrome 中,如果需要输入并且您没有将内容放在那里,该框会变成红色,并且您会收到一条错误消息。
我想知道我是否可以在这里做同样的事情,所以对于这个项目,在这种情况下,我会得到一个红色的输入框,上面有警告“电子邮件已被接收”或类似的东西
【问题讨论】:
标签: php forms validation symfony