秉着单一职责的原则,我们在掌握器中,只须要吸收参数,调用验证器方法,进行参数验证
我们通过一个例子来看怎么利用,比如创建banner管理
在这里我们首先利用 php artisan make:rule BannerValidator 创建出来验证器文件,是这个样子的

它继续了Rule中的两个方法 passes 和message,这里我们把这个类轻微改造一下,方便我们利用
<?phpnamespace App\Rules\Admin;use Illuminate\Contracts\Validation\Rule;use Illuminate\Support\Facades\Validator;class BannerValidator implements Rule{ protected $rules; protected $message; / Create a new rule instance. @return void / public function __construct($type = null) { switch ($type) { case 'save': $this->rules = [ 'img' => ['required'], ]; $this->message = [ 'img.required' => '图片url不能为空', ]; break; case 'edit': $this->rules = [ 'id' => ['required', 'integer'], 'img' => ['required'], ]; $this->message = [ 'id.required' => 'id不能为空', 'img.required' => '图片url不能为空', ]; break; case 'del': $this->rules = [ 'id' => ['required', 'integer'], ]; $this->message = [ 'id.required' => 'id不能为空', ]; break; default: break; } } / Determine if the validation rule passes. @param string $attribute @param mixed $value @return bool / public function passes($attribute = null, $value = null) { $validator = Validator::make($attribute, $this->rules, $this->message); if ($validator->fails()) { return $validator->errors()->first(); } return true; } / Get the validation error message. @return string / public function message() { return 'The validation error message.'; }}
上面的代码是我们改造过后的验证器,首先定义两个变量:$rules和$message,其次passes方法中利用内置的Validator去验证参数,__construct布局方法中根据传入的类型,赋值$rules和$message
接着看我们在掌握器中是怎么利用的
上图赤色框中便是我们详细利用的方法,在实例化这个验证器的时候,传入验证场景,验证器文件中根据不同的场景值,验证干系的参数
以上便是我这边利用的验证参数的方法,我以为这样写,掌握器代码逻辑会很清晰,各个文件各司其职,不至于逻辑掺杂在一起造成代码可读性差