thinkphp6是一款基于php的mvc框架,極大地簡化了web應(yīng)用程序的開發(fā)。其中表單驗(yàn)證是一個(gè)非常基礎(chǔ)和重要的功能。在這篇文章中,我們將介紹thinkphp6中如何進(jìn)行表單驗(yàn)證操作。
一、驗(yàn)證規(guī)則定義
在ThinkPHP6中,驗(yàn)證規(guī)則都需要定義在控制器中,我們可以通過在控制器中定義一個(gè)$validate屬性來實(shí)現(xiàn)規(guī)則的定義,如下所示:
use thinkValidate; class UserController extends Controller { protected $validate; public function __construct(Validate $validate) { $this->validate = $validate; } // 定義驗(yàn)證規(guī)則 protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', 'age' => 'number|between:1,120', ]; }
二、表單驗(yàn)證
當(dāng)我們定義了驗(yàn)證規(guī)則后,我們可以在控制器中使用$validate的check()方法執(zhí)行我們定義的驗(yàn)證規(guī)則。通過在控制器中的$request對(duì)象上調(diào)用validate()方法并傳入驗(yàn)證規(guī)則,即可實(shí)現(xiàn)驗(yàn)證操作。
public function add(Request $request) { $data = $request->param(); $result = $this->validate($data, $this->rule); if ($result !== true) { return ['code' => 1, 'msg' => $result]; } // 驗(yàn)證通過,執(zhí)行添加操作 }
在上述代碼中,$request->param()方法返回的是一個(gè)數(shù)組,其中包含了表單中所有的參數(shù)值。我們將其傳入validate()方法中進(jìn)行驗(yàn)證,如果驗(yàn)證失敗則會(huì)返回錯(cuò)誤信息,如果驗(yàn)證通過則會(huì)直接執(zhí)行添加操作。
三、自定義錯(cuò)誤消息
在實(shí)際開發(fā)中,我們可能需要對(duì)一些規(guī)則進(jìn)行自定義錯(cuò)誤消息的設(shè)置,這可以通過在驗(yàn)證規(guī)則中使用:message()方法來實(shí)現(xiàn)。
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', 'age' => 'number|between:1,120', ]; protected $message = [ 'name.require' => '用戶名必填', 'name.max' => '用戶名最多不能超過25個(gè)字符', 'email.email' => '郵箱格式錯(cuò)誤', 'age.number' => '年齡必須是數(shù)字', 'age.between' => '年齡必須在1~120之間', ];
通過在控制器中使用$validate的message()方法,我們就可以對(duì)規(guī)則的錯(cuò)誤信息進(jìn)行自定義設(shè)置。例如:
$result = $this->validate($data, $this->rule, $this->message);
四、批量驗(yàn)證
當(dāng)我們需要驗(yàn)證多個(gè)表單時(shí),可以使用$validate的batch()方法來進(jìn)行批量驗(yàn)證。例如:
public function verify(Request $request) { $data = $request->param(); $rule = [ 'name' => 'require|max:25', 'email' => 'email', 'age' => 'number|between:1,120', ]; $message = [ 'name.require' => '用戶名必填', 'name.max' => '用戶名最多不能超過25個(gè)字符', 'email.email' => '郵箱格式錯(cuò)誤', 'age.number' => '年齡必須是數(shù)字', 'age.between' => '年齡必須在1~120之間', ]; $result = $this->validate($data, $rule, $message, true); if ($result !== true) { return ['code' => 1, 'msg' => $result]; } // 驗(yàn)證通過,執(zhí)行相關(guān)操作 }
在上述代碼中,$validate方法的第四個(gè)參數(shù)為true,表示開啟批量驗(yàn)證。開啟批量驗(yàn)證后,可以設(shè)置多個(gè)表單驗(yàn)證規(guī)則,在驗(yàn)證失敗時(shí)返回所有錯(cuò)誤信息。
總結(jié):
在ThinkPHP6中,通過在控制器中定義$validate屬性來定義驗(yàn)證規(guī)則,通過在$request對(duì)象上調(diào)用validate()方法進(jìn)行表單驗(yàn)證,并可以通過message()方法進(jìn)行自定義錯(cuò)誤消息的設(shè)置。同時(shí),通過batch()方法可以實(shí)現(xiàn)批量驗(yàn)證。這些操作都是非常基礎(chǔ)和常用的,我們?cè)趯?shí)際的開發(fā)中也要熟練掌握。