🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 表单验证规则:required、present 、filled 和 nullable ## 三个概念 在解释这四个验证规则前,需要明晰三个概念——空值(empty)、输入数据(input data)和验证字段(filed under validation)。 ## 空值 在 Laravel 中,一个字段值满足下面任一条件都被视为空值。 null ~~~ 空字符串('') 空数组([])或空 Countable 对象 无路径的上传文件 ~~~ 输入数据&验证字段 以注册功能为例。 ~~~ use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; public function register(Request $request) { $this->validator($request->all())->validate(); ... } protected function validator(array $data) { return Validator::make($data, [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]); } ~~~ `$request->all()` 就是「输入数据」,`Validator::make `里的 `name、email` 和` password` 就是「验证字段」。 ## 验证规则 ~~~ required 验证字段必须出现在输入数据中、不能为空。 present 验证字段必须出现在输入数据中、能为空。 filled 验证字段可不在输入数据中。 当验证字段出现在输入数据中时,不能为空。 nullable 验证字段的值可以是 null。 ~~~ # laravel验证两个字段必须有一个必填 ~~~ 'email' => 'required_without:phone', 'phone' => 'required_without:email', set_time_limit 可以控制秒级的最大执行时间,一个500毫秒的超时 declare(ticks=1); $start = microtime(true); register_tick_function(function () use ($start) { (microtime(true) - $start < 0.5) or die("timeout\n"); }); function a() { echo "do some work\n"; usleep(600000); echo "do another work\n"; } a(); ~~~