使用Symfony 2.3.4。 当我创建一个带有字段的表单时,它应该处理电子邮件,我会使用默认的电子邮件类型:
builder->add('email', 'email', array(
'label' => 'Email',))
只有这个,它成功验证用户输入,而不是我想要的方式,意思是:
它如何运作:
me --> notallowed
me@gmail --> allowed
我需要它如何工作:
me --> notallowed
me@gmail --> notallowed
me@gmail.com --> allowed
总结:
我认为我需要的是更改/自定义验证这个的默认正则表达式,我猜这是在symfony中的众多文件之一。
感谢有关此的任何提示,谢谢
答案 0 :(得分:0)
实际上,您在此处看到的验证是基于浏览器的HTML5验证。输入me
时弹出的消息来自您的浏览器,不涉及Symfony。我发现大多数情况下HTML5验证都不可靠。最佳做法是在服务器端进行验证,并为客户端使用某种类型的javascript验证。
有关设置服务器端验证的详细信息,请参阅the symfony docs,它们提供了一些很好的示例,非常有用。
答案 1 :(得分:0)
您可以通过javascript处理电子邮件验证。在表单提交上调用任何方法,如
function validate(){
var email=$('#email').val();
if(email!=""){
var re =/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!re.test(email)) {
alert('please Enter Valid email address');
}
}
<form onSubmit="return validate();">
<input type="text" name="email" id="email" placeholder="Please Enter your Email address" />
</form>
答案 2 :(得分:0)
请参阅以下链接表格字段类型电子邮件 Symfony form type email
如果您想要电子邮件的jquery验证
$('#formId').validate({
errorClass: 'help-block',
rules: {
'textFieldName': {
required: true,
email: true
}
},
messages: {
'textFieldName': {
email: "Invalid Email Address"
}
},
highlight: function (element) {
$(element).parent().parent().removeClass("success").addClass("error");
},
unhighlight: function (element) {
$(element).parent().parent().removeClass("error").addClass("success");
}
}); //验证