KU案例2之22 注册验证

让我们添加一个些验证。以防止我们输入一个无效的邮件和存在的用户名。

html5验证

尝试提交空白表单!哇!你会发现我们已经有了一些验证。事实上,如果我们输入一个无效的email地址,我们也可以看到错误。这就是html5验证。当我们检查这个字段,我们会看到他:

首先,每个字段都有一个required属性,如果你的浏览器支持html5,他会爆出一个不能为空的提示。其次,input有一个type=email这是告诉浏览器必须填入一个有效的电子邮件地址,而不是随便的字符串。

我们在input中有一个type=email字段是因为我们在symfony的form中设置了email字段,但是input中的required属性是从哪里来的呢?

 

字段配置

要解决这个问题,要看添加字段的第三个参数:为一个数组

每一个字段类型都可以已不同的方式配置。例如,这个repeated就有一个type配置。每个字段都有一堆的选项,required就是其中一个。把email字段的required配置为false并刷新:

这个配置所有字段都有,并且它默认都为true。

在这里每一个字段类型都有很多的配置变量。了解他们的最简单的方式就是通过文档。请记住表单字段类型参考

他显示了所有的字段类型和他们的配置。

 

挖掘核心

你可以深入到源代码,有一个RepeatedType类,里面可以找到setDefaultOptions方法,这个方法可以设置默认repeated类型的配置变量。

大部分的全局配置都会继承FormType类。在这里你可以看到required和一些其他的类型。那么在他的父类BaseType里我们可以看到像label和attr。我们可以在表单类中添加一些自定义的标签或者添加一个字段的class:

当我们刷新,你可以看到它开始为我们工作了。

 

禁用HTML5验证

html5验证虽然很好,但是还不够,我们还需要服务器端的验证。另外,你不能够定制html5验证的样子和消息。而且,symfony会默认所有的字段都有required属性,这太烦人了。

我建议避免使用html5验证。要禁用他,这时我们要添加一个novalidate属性到你的form标签中:

刷新表单,并尝试上传空表单。我们看到一个很大的数据库错误,这证明了我们关闭了html5验证。现在,让我们添加一些服务器验证!

 

发表评论