tit*_*ior 1 php validation laravel laravel-5
在我的控制器中,我有类似的东西:
switch ($type)
{
case '1':
$validation_rules = [
'a' => 'required',
'b' => 'required',];
break;
case '2':
$validation_rules = [
'd' => 'required',
'j' => 'nullable|numeric',];
break;
case '3':
$validation_rules = [
't1.x' => 'required|numeric',
't1.y' => 'required|numeric',];
break;
}
$request->validate($validation_rules);
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这样,因为它会使我的控制器大量增加.我正在寻找一种方法来使用请求验证.
这样的东西将成为我的目标:
public function store(XXRequest $request)
Run Code Online (Sandbox Code Playgroud)
并将验证的逻辑放在里面.
创建一个新的请求文件:
php artisan make:request SomeRequest
Run Code Online (Sandbox Code Playgroud)
将逻辑放入rules()
方法中:
public function rules()
{
switch ($this->type)
{
case '1':
$validation_rules = [
'a' => 'required',
'b' => 'required',];
break;
case '2':
$validation_rules = [
'd' => 'required',
'j' => 'nullable|numeric',];
break;
case '3':
$validation_rules = [
't1.x' => 'required|numeric',
't1.y' => 'required|numeric',];
break;
}
return $validation_rules;
}
Run Code Online (Sandbox Code Playgroud)
然后使用它:
public function store(SomeRequest $request)
Run Code Online (Sandbox Code Playgroud)
https://laravel.com/docs/5.5/validation#form-request-validation