Thinkphp5學習(17)輸入和驗證
阿新 • • 發佈:2019-01-23
TP5輸入和驗證
1.表單提交
2.表單驗證
3.錯誤提示
4.自定義驗證規則
5.控制器驗證
演示:
建立控制器 建立檢視
建立驗證器
圖1
圖2
form表單提交
Controller
1.自動收集資料input(‘post.’)
2.自動檢測欄位allField(true)
3.自動校驗正確性validate(true),User驗證器配置各個欄位驗證規則
永遠不要相信使用者的資料,所以現在給表單提交沽加資料驗證
建立驗證器
關於生日,
提交時,填寫日期格式:2001-01-01,
入庫時,是,int(10)
顯示時,是,2001-01-01,
model中:
<?php
// application/index/model/User.php
namespace app\index\model;
use think\Model;
class User extends Model
{
// 定義型別轉換,這樣就不用讀取器,修改器
// protected $dataFormat = 'Y/m/d';
protected $type=array(
'reg_time'=>'timestamp:Y-m-d',
'nickname'=>'serialize',
'birthday' =>'timestamp:Y-m-d'
);
// 定義自動完成的屬性
protected $insert = ['status'=>1];
//protected $update = ['status'=>1];
// 還可以結合修改器來指定自動完成
protected function setSexAttr($value,$data){
return $data['head_pic']=='boy.jpg'?1:0;
}
// 自動完成 insert update auto
protected $update = array(
'sex' =>0
);
public function getRegTimeAttr($value,$data){
return date('Y-m-d',$value).$data['nickname'];
}
public function setRegTimeAttr($value){
return strtotime($value);
}
}
validate 中。
<?php
// application/index/validate/User.php
namespace app\index\validate;
use think\Validate;
class User extends Validate
{
// 驗證規則
protected $rule = [
['nickname','require|min:5','暱稱必須|暱稱不能短於5個字元'],
['email','email','郵箱格式錯誤'],
['birthday','dateFormat:Y-m-d','生日格式錯誤']
];
}
<?php
// application/index/controller/User.php
namespace app\index\controller;
use think\Controller;
use app\index\model\User as mUser;
class User extends Controller
{
// 建立使用者資料頁面
public function create(){
return view();
}
// 新增使用者資料
public function add_0(){
// 自動收集表單資料 input('post.')
// 自動排除不相關欄位
// 自動校驗非法欄位
// 自動生成insert 語句 執行入庫
$user = new mUser;
if($user->allowField(true)->validate(true)->save(input('post.'))){
return '使用者['.$user->nickname.':'.$user->id .']新增成功';
}else{
return $user->getError();
}
}
// 單獨驗證某欄位
public function add(){
$data = input('post.');
// 驗證birthday 是否是有效的日期
$check = Validate::is($data['birthday'],'date');
if(false===$check){
return 'birthday日期格式非法';
}
// 因為Controller名是User,避免重複model取別名為mUser
$user = new mUser;
// 資料儲存
$user->allowField(true)->save($data);
return '使用者['.$user->nickname.':'.$user->id.']新增成功';
}
}