摘要:<?php /** * Created by PhpStorm. * User: 普通用户 * Date: 2019/6/23 * Time: 18:53 */ namespace app\index\controller; use
<?php
/**
* Created by PhpStorm.
* User: 普通用户
* Date: 2019/6/23
* Time: 18:53
*/
namespace app\index\controller;
use think\Controller;
use app\index\model\Book as BookModel;
class Validate extends Controller
{
public function index()
{
$res = BookModel::get(9);
dump($res);
echo $res->sex.'<hr>';
echo $res->price;
echo '<hr>';
// 自定义字段
echo $res->price_info;
}
public function modify()
{
$res = BookModel::get(10);
$res->publish = '2019-08-08';
// $res->save();
$res->price = 800;
$res->save();
echo '修改成功';
}
public function auto()
{
BookModel::create(['name'=>'从入门到精通','price'=>'666','sex'=>1]);
echo '添加成功';
}
public function del()
{
BookModel::destroy(25);
echo '删除成功';
}
}<?php
/**
* Created by PhpStorm.
* User: 普通用户
* Date: 2019/6/18
* Time: 21:24
*/
namespace app\index\model;
use think\Model;
use think\model\concern\SoftDelete;
class Book extends Model
{
use SoftDelete;
protected $table = 'book';
protected $pk = 'id';
protected $deleteTime='delete_time';
protected $defaultSoftDelete=0;
protected $autoWriteTimestamp = true;
protected $createTime = 'create_time';
protected $updateTime='update_time';
protected function getSexAttr($val)
{
$sex = [0=>'男',1=>'女'];
return $sex[$val];
}
protected function getPriceAttr($value,$data)
{
return '书本名:'.$data['name'].'价格为:'.$value;
}
protected function getPriceInfoAttr($value,$data)
{
return 'id:'.$data['id'].'书本名为:'.$data['name'].
'作者:'.$data['author'];
}
protected function setPublishAttr($value)
{
return strtotime($value);
}
protected function setPriceAttr($value,$data)
{
// return $value+$data['id'];
return $value+$data['sex'];
}
}
<?php
/**
* Created by PhpStorm.
* User: 普通用户
* Date: 2019/6/23
* Time: 22:19
*/
namespace app\index\validate;
use think\Validate;
class Book extends Validate
{
protected $rule=[
'name'=>'require|min:5|max:20',
'sex'=>'in:0,1',
'author'=>'require',
'price'=>'require|between:1,1000',
];
protected $message=[
'name.require'=>'书名不能为空',
'name.min'=>'书名不能少于5',
'name.max'=>'书名不能多于20个字符',
'sex.in'=>'作者性别只能选男或女',
'author.require'=>'作者不能为空',
'price.require'=>'价格不能为空',
'price.between'=>'书本价格必须在1-1000元之间',
];
}<?php
/**
* Created by PhpStorm.
* User: 普通用户
* Date: 2019/6/23
* Time: 22:22
*/
namespace app\index\controller;
use think\Controller;
use think\Validate;
use app\index\Validate\Book;
class Verify extends Controller
{
// 验证器:直接实例化验证器
public function verify1()
{
$data = [
'name'=>'mysql入门到精通',
'sex'=>0,
'author'=>'mysql中文网',
'price'=>1000
];
$validate = new Book();
if(!$validate->check($data)){
dump($validate->getError());
}else{
return '验证通过';
}
}
// 使用控制器内的验证方法来完成验证
public function verify2()
{
$data=[
'name'=>'js入门到精通',
'sex'=>0,
'author'=>'js中文网',
'price'=>777];
$rule='app\index\validate\Book';
// $rule=['price'=>'between:55,85'];
$message=['price'=>'书本价格必须在55-85元之间'];
// $data=['price'=>90];
// $res = $this->validate($data,$rule);
$res = $this->validate($data,$rule,$message);
if(true!==$res)
{
return $res;
}
return '验证成功2';
}
// 使用Verify基类进行验证
public function verify3()
{
$rule = [
'price'=>'require|between:10,1000'
];
$message=[
'price.require'=>'书本价格不可以为空',
'price.between'=>'书本价格在10-1000元之间'
];
$data=['price'=>1001];
$validate=Validate::make($rule,$message);
$res = $validate->check($data);
return $res?'通过验证':$validate->getError();
}
}
经过本章节的学习,对模型自动操作和数据验证有了一定的掌握,框架各种操作类的提供使得开发效率大大的提生,后续再逐渐运用才能更加的熟练
批改老师:天蓬老师批改时间:2019-06-24 10:13:50
老师总结:验证的方式很多, 具体采用哪一种并不重要, 重要的是, 一旦确定下来就要坚持 , 不要一会用验证器, 一会独立 验证, 一会用控制器方法验证, 就不好了