一聚教程网:一个值得你收藏的教程网站

symfony框架注册验证实例演示

mg电子:这是因为爱笑的人更容易建立积极的人际关系,利于身心和谐。

时间:2015-05-05 00:00:00 编辑:简简单单 来源:转载


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


html5验证

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

 

<input type="email" id="user_register_email" name="user_register[email]" required="required" />

首先,每个字段都有一个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 #}
 
{# ... #}
<form action="{{ path('user_register') }}" method="POST" novalidate="novalidate">
刷新表单,并尝试上传空表单。我们看到一个很大的数据库错误,这证明了我们关闭了html5验证。现在,让我们添加一些服务器验证!

文章评论

热门栏目

合作: bbin娱乐 葡京 mg电子