命令
php think make:validate admin/Shop //建一个叫shop的验证器
进入shop验证器,定义规则和提示消息,这些就根据自己自定义了
例如:
<?php
namespace app\admin\validate;
use think\Validate;
class Shop extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'tag_id[]' => 'require',
'name' => 'require|max:25',
'image' => 'require',
'price'=>'number|require',
'original_price'=>'number|require',
'category_id'=>'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'name.require' => '名称必须',
'tag_id[].require' => '标签必须',
'image.require' => '商π图片必须',
'price.require' => '价格必填',
'num.require' => '数量必填',
'name.max' => '名称最多不能超过25个字符',
'price.number' => '年龄必须是数字',
];
}
控制器使用,先定义一个方法,在方法当中使用,else通过验证执行的语句
$validate = new \app\admin\validate\Shop;
if (!$validate->check($request->param())) {
$this->error($validate->getError()); //返回错误信息
} else {
*********
}
登录验证,未使用验证器
public function login()
{
if($_POST){ //post接受
$data['username'] = $_POST['username'];
$data['password'] = $_POST['password']; //调用函数加密密码
$test = Db::name('admin')->where($data)->find(); //根据data数组查找user表中的对应字段
//
if(!$test){ //如果test不存在
$this->error('用户名或密码填写错误');
}else{
session('admin', $test); //存入session
$this->success('恭喜,登录成功', '/admin');
}
}else{
return view('user/login');
}
}
使用控制器自带的方法验证,还是需要在验证器里面定义规则
public function index()
{
$result = $this->validate(
[
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com',
],
'app\index\validate\User');
if (true !== $result) {
// 验证失败 输出错误信息
dump($result);
}
}