????:<?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 '書(shū)本名:'.$data['name'].'價(jià)格為:'.$value; } protected function getPriceInfoAttr($value,$data) { return 'id:'.$data['id'].'書(shū)本名為:'.$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'=>'書(shū)名不能為空', 'name.min'=>'書(shū)名不能少于5', 'name.max'=>'書(shū)名不能多于20個(gè)字符', 'sex.in'=>'作者性別只能選男或女', 'author.require'=>'作者不能為空', 'price.require'=>'價(jià)格不能為空', 'price.between'=>'書(shū)本價(jià)格必須在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 { // 驗(yàn)證器:直接實(shí)例化驗(yàn)證器 public function verify1() { $data = [ 'name'=>'mysql入門到精通', 'sex'=>0, 'author'=>'mysql中文網(wǎng)', 'price'=>1000 ]; $validate = new Book(); if(!$validate->check($data)){ dump($validate->getError()); }else{ return '驗(yàn)證通過(guò)'; } } // 使用控制器內(nèi)的驗(yàn)證方法來(lái)完成驗(yàn)證 public function verify2() { $data=[ 'name'=>'js入門到精通', 'sex'=>0, 'author'=>'js中文網(wǎng)', 'price'=>777]; $rule='app\index\validate\Book'; // $rule=['price'=>'between:55,85']; $message=['price'=>'書(shū)本價(jià)格必須在55-85元之間']; // $data=['price'=>90]; // $res = $this->validate($data,$rule); $res = $this->validate($data,$rule,$message); if(true!==$res) { return $res; } return '驗(yàn)證成功2'; } // 使用Verify基類進(jìn)行驗(yàn)證 public function verify3() { $rule = [ 'price'=>'require|between:10,1000' ]; $message=[ 'price.require'=>'書(shū)本價(jià)格不可以為空', 'price.between'=>'書(shū)本價(jià)格在10-1000元之間' ]; $data=['price'=>1001]; $validate=Validate::make($rule,$message); $res = $validate->check($data); return $res?'通過(guò)驗(yàn)證':$validate->getError(); } }
經(jīng)過(guò)本章節(jié)的學(xué)習(xí),對(duì)模型自動(dòng)操作和數(shù)據(jù)驗(yàn)證有了一定的掌握,框架各種操作類的提供使得開(kāi)發(fā)效率大大的提生,后續(xù)再逐漸運(yùn)用才能更加的熟練
?? ???:天蓬老師?? ??:2019-06-24 10:13:50
???? ??:驗(yàn)證的方式很多, 具體采用哪一種并不重要, 重要的是, 一旦確定下來(lái)就要堅(jiān)持 , 不要一會(huì)用驗(yàn)證器, 一會(huì)獨(dú)立 驗(yàn)證, 一會(huì)用控制器方法驗(yàn)證, 就不好了