最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
symfony框架注册验证实例演示
时间:2022-06-25 02:49:04 编辑:袖梨 来源:一聚教程网
让我们添加一个些验证。以防止我们输入一个无效的邮件和存在的用户名。
html5验证
尝试提交空白表单!哇!你会发现我们已经有了一些验证。事实上,如果我们输入一个无效的email地址,我们也可以看到错误。这就是html5验证。当我们检查这个字段,我们会看到他:
首先,每个字段都有一个required属性,如果你的浏览器支持html5,他会爆出一个不能为空的提示。其次,input有一个type=email这是告诉浏览器必须填入一个有效的电子邮件地址,而不是随便的字符串。
我们在input中有一个type=email字段是因为我们在symfony的form中设置了email字段,但是input中的required属性是从哪里来的呢?
字段配置
要解决这个问题,要看添加字段的第三个参数:为一个数组
// src/Yoda/UserBundle/Form/RegisterFormType.php
// ...
$builder->add('email', 'email', array(
// an array of options to pass to this field
))
每一个字段类型都可以已不同的方式配置。例如,这个repeated就有一个type配置。每个字段都有一堆的选项,required就是其中一个。把email字段的required配置为false并刷新:
// src/Yoda/UserBundle/Form/RegisterFormType.php
// ...
$builder
// ...
->add('email', 'email', array(
'required' => false
))
// ...
;
这个配置所有字段都有,并且它默认都为true。
在这里每一个字段类型都有很多的配置变量。了解他们的最简单的方式就是通过文档。请记住表单字段类型参考。
他显示了所有的字段类型和他们的配置。
挖掘核心
你可以深入到源代码,有一个RepeatedType类,里面可以找到setDefaultOptions方法,这个方法可以设置默认repeated类型的配置变量。
大部分的全局配置都会继承FormType类。在这里你可以看到required和一些其他的类型。那么在他的父类BaseType里我们可以看到像label和attr。我们可以在表单类中添加一些自定义的标签或者添加一个字段的class:
// src/Yoda/UserBundle/Form/RegisterFormType.php
// ...
$builder
->add('email', 'email', array(
'required' => false,
'label' => 'Email Address',
'attr' => array('class' => 'C-3PO')
))
// ...
;
当我们刷新,你可以看到它开始为我们工作了。
禁用HTML5验证
html5验证虽然很好,但是还不够,我们还需要服务器端的验证。另外,你不能够定制html5验证的样子和消息。而且,symfony会默认所有的字段都有required属性,这太烦人了。
我建议避免使用html5验证。要禁用他,这时我们要添加一个novalidate属性到你的form标签中:
{# src/Yoda/UserBundle/Resources/views/Register/register.html.twig #}
{# ... #}