abstrak:<?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中文網(wǎng)', 'price'=>1000 ]; $validate = new Book(); if(!$validate->check($data)){ dump($validate->getError()); }else{ return '驗證通過'; } } // 使用控制器內的驗證方法來完成驗證 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'=>'書本價格必須在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(); } }
經(jīng)過本章節(jié)的學習,對模型自動操作和數(shù)據(jù)驗證有了一定的掌握,框架各種操作類的提供使得開發(fā)效率大大的提生,后續(xù)再逐漸運用才能更加的熟練
Guru membetulkan:天蓬老師Masa pembetulan:2019-06-24 10:13:50
Rumusan guru:驗證的方式很多, 具體采用哪一種并不重要, 重要的是, 一旦確定下來就要堅持 , 不要一會用驗證器, 一會獨立 驗證, 一會用控制器方法驗證, 就不好了