php yaf框架扩展实践三——表单
```
$name = $this->getRequest()->getPost("name");
$password = $this->getRequest()->getPost("password");
//校验name字段
if (strlen($name) >= 6...) {
//字段没有通过验证处理
}
//校验password字段
if (strlen($password) >= 8 ...) {
//字段没有通过验证处理
}
```
```
//实例化表单对象,并传入需要验证的参数数组
//其中键表示字段名
$form = new \Forms\User\LoginModel($this->getRequest()->getParams());
//调用表单对象的校验方法,该方法会根据字段设置校验所有字段
if (!$form->validate()) {
//校验失败,可以通过getMessages获取有错误字段的错误信息
var_dump($form->getMessages());
exit();
}
//表单校验通过,通过getFieldValue获取所有字段的值
$params = $form->getFieldValue();
var_dump($params);
```

```
'id' => array(
'label' => '编号',
'name' => 'id',
'require' => true,
'message' => '编号不能为空',
"validate<span class="hljs-string">" => array(
array("</span>type" => "int", "min" => "1", "max" => "1000000", "msg" => "编号不正确<span class="hljs-string">")
),
),</span>
```
```
'name' => array(
'label' => '姓名',
'name' => 'name',
'require' => true,
'message' => '姓名不能为空',
"validate<span class="hljs-string">" => array(
array("</span>type" => "string", "min" => "2", "max" => "20", "msg" => "姓名长度不正确<span class="hljs-string">")
),
),</span>
```
```
'amount' => array(
'label' => '总额',
'name' => 'amount',
'require' => true,
'message' => '总额不能为空',
"validate<span class="hljs-string">" => array(
array("</span>type" => "float", "min" => "0.01", "max" => "299.99", "msg" => "总额不正确<span class="hljs-string">")
),
),
</span>
```
```
'birthday' => array(
'label' => '生日',
'name' => 'birthday',
'require' => true,
'message' => '生日不能为空',
"validate<span class="hljs-string">" => array(
array("</span>type" => "date", "formats" => array("Y-m-d", "Y/m/d"), "msg" => "生日格式不正确<span class="hljs-string">")
),
),</span>
```
```
'sex' => array(
'label' => '性别',
'name' => 'sex',
'require' => true,
'message' => '性别不能为空',
"validate<span class="hljs-string">" => array(
array("</span>type" => "set", "set" => array("1","2","3"), "msg" => "性别格式不正确<span class="hljs-string">")
),
),</span>
```
```
namespace Forms\User;
/**
* 表单demo
*/
class DemoModel extends \Forms\AbstractModel {
/**
* 表单字段
*
* @var array
*/
protected $_fields = array(
'demo1' => array(
'label' => 'demo1',
'name' => 'demo1',
'require' => true, //表示字段是否必须
"validate<span class="hljs-string">" => array(
array("</span>type" => "int", "min" => "1", "max" => "3", "msg" => "demo1不正确<span class="hljs-string">")
),
),
'demo2' => array(
'label' => 'demo2',
'name' => 'demo2',
'require' => false, //字段非必须
'default' => "</span>123456<span class="hljs-string">", //如果字段没有传入则设置该默认值,require为false时可以设置
"</span>validate<span class="hljs-string">" => array(
array("</span>type" => "string", "min" => "6", "max" => "18", "msg" => "demo2不正确<span class="hljs-string">")
),
),
);
/**
* 校验demo2字段,名字由validate+字段名开头的方法将被调用
*
* @return boolean
*/
public function validateDemo2() {
$demo2 = $this->getFieldValue("</span>demo2<span class="hljs-string">");
//这里可以进行更加复杂的校验
return true;
}
}<br></br></span>
```
本文转自:http://www.01happy.com/php-yaf-ext-form/
评论区