一,代碼:創建兩個validate
1,驗證商品列表
創建一個validate
liuhongdi@lhdpc:/data/php/admapi$ php think make:validate GoodsList Validate:app\validate\GoodsList created successfully.
validate/GoodsList.php
<?php declare (strict_types = 1); namespace app\validate; use think\Validate; class GoodsList extends Validate { /** * 定義驗證規則 * 格式:'字段名' => ['規則1','規則2'...] * * @var array */ protected $rule = [ 'categoryId' => 'require|integer|gt:0', 'channelId' => 'require|length:4|alphaNum', ]; /** * 定義錯誤信息 * 格式:'字段名.規則名' => '錯誤信息' * * @var array */ protected $message = [ 'categoryId.require' => '分類id必須', 'categoryId.integer' => '分類id需要是整數', 'categoryId.gt' => '分類id需大於0', 'channelId.require' => '頻道id必須', 'channelId.length' => '頻道id長度不為4', 'channelId.alphaNum' => '頻道id需由字母和數字構成', ]; }
2,驗證登錄
創建validate
liuhongdi@lhdpc:/data/php/admapi$ php think make:validate Login Validate:app\validate\Login created successfully.
validate/Login.php
<?php declare (strict_types = 1); namespace app\validate; use think\Validate; class Login extends Validate { /** * 定義驗證規則 * 格式:'字段名' => ['規則1','規則2'...] * * @var array */ protected $rule = [ 'username' => 'require|min:6|max:25', 'password' => 'require|min:6|max:10', ]; /** * 定義錯誤信息 * 格式:'字段名.規則名' => '錯誤信息' * * @var array */ protected $message = [ 'username.require' => '用戶名必須', 'username.min' => '用戶名最少不能低於6個字符', 'username.max' => '用戶名最多不能超過25個字符', 'password.require' => '密碼必須', 'password.min' => '密碼最少不能低於6個字符', 'password.max' => '密碼最多不能超過25個字符', ]; }
說明:劉宏締的架構森林是一個專注架構的博客,
網站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/29/thinkphp6-yong-validate-yan-zheng-can-shu-he-fa-xing/
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
或: https://gitee.com/liuhongdi
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,代碼:創建一個controller
1,創建controller
liuhongdi@lhdpc:/data/php/admapi$ php think make:controller Auth Controller:app\controller\Auth created successfully.
代碼:
<?php declare (strict_types = 1); namespace app\controller; use think\Request; use app\result\Result; use think\response\Json; use app\validate\Login as LoginValidate; use app\validate\GoodsList as GoodsListValidate; use think\exception\ValidateException; class Auth { /** * 商品列表 * * @return \think\Response */ public function goodsList():Json { try { //echo "begin check:<br/>"; validate(GoodsListValidate::class) //->scene('edit') ->check($_GET); } catch (ValidateException $e) { // 驗證失敗 輸出錯誤信息 //echo "get error:<br/>"; //var_dump($e->getError()); return Result::Error(422,$e->getError()); } $data = [ ['id'=>"1",'name'=>"牙刷"], ['id'=>"2",'name'=>"杯子"], ]; return Result::Success($data); } /** * 登錄 * * @return \think\Response */ public function login():Json { try { //echo "begin check:<br/>"; validate(LoginValidate::class) //->scene('edit') ->check($_POST); } catch (ValidateException $e) { // 驗證失敗 輸出錯誤信息 //echo "get error:<br/>"; //var_dump($e->getError()); return Result::Error(422,$e->getError()); } if ($_POST["username"] == "dddddd" && $_POST["password"] == "111111"){ //echo "success:<br/>"; return Result::Success("success"); } else { //echo "error:<br/>"; return Result::Error(422,"用戶名密碼錯誤"); } } }
三,測試效果:
1,訪問:
http://127.0.0.1:8000/auth/goodslist?categoryId=a
返回:
2,訪問:
http://127.0.0.1:8000/auth/goodslist?categoryId=0
返回:
3,訪問:
http://127.0.0.1:8000/auth/goodslist?categoryId=5
返回:
4,訪問:
http://127.0.0.1:8000/auth/goodslist?categoryId=5&channelId=a1@2
返回:
5,訪問:
http://127.0.0.1:8000/auth/goodslist?categoryId=5&channelId=a1ddd
返回:
四,查看php和thinkphp的版本:
php:
root@lhdpc:~# php --version PHP 8.0.14 (cli) (built: Dec 23 2021 11:52:42) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.14, Copyright (c) Zend Technologies with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
thinkphp:
root@lhdpc:~# cd /data/php/admapi/ root@lhdpc:/data/php/admapi# php think version v6.0.9
