在symfony2中更改默认表单电子邮件类型regex

时间:2014-03-20 17:10:14

标签: regex forms email symfony types

使用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中的众多文件之一。

感谢有关此的任何提示,谢谢

3 个答案:

答案 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");
}

}); //验证