Thinkphp5学习(17)输入和验证
学习内容:
视频教程:
https://www.kancloud.cn/tpshop/thinkphp5/228860
完全开发手册:https://www.kancloud.cn/manual/thinkphp5/129352
教程中的代码:https://github.com/phpervip/tp5a
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 appindexmodel;
use thinkModel;
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 appindexvalidate;
use thinkValidate;
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 appindexcontroller;
use thinkController;
use appindexmodelUser 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."]新增成功";
}
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 深入入门正则表达式(java) - 命名捕获
- 下一篇: php用正则判断是否为数字