Car*_*zar 5 laravel laravel-5 laravel-validation laravel-request laravel-5.6
我正在使用 laravel 5.6 resources controllers
,form request
问题是我有一些已required
创建的输入,但在编辑时是可选的,例如文件输入。所以我有这个表格请求
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ProgramRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
'name.*' => 'required',
'description.*' => 'required',
'logo' => 'required|image|max:3000',
'logo_alt' => 'required|image|max:3000'
];
}
}
Run Code Online (Sandbox Code Playgroud)
创建程序时必须发送字段logo
和,但编辑程序时发送是可选的。logo_alt
logo
有没有办法用相同的方式验证这两种情况,form request
或者我必须创建不同的情况form request
来进行编辑和创建?
您可以用来$this->method()
检查使用了哪种请求方法并为每种情况显示不同的规则:
public function rules()
{
switch($this->method())
{
case 'GET':
case 'DELETE':
{
return [];
}
case 'POST':
{
return [
'name.*' => 'required',
'description.*' => 'required',
'logo' => 'required|image|max:3000',
'logo_alt' => 'required|image|max:3000'
];
}
case 'PUT':
{
return [
'description.*' => 'required',
'logo' => 'nullable|image|max:3000',
'logo_alt' => 'nullable|image|max:3000'
];
}
case 'PATCH':
{
return [];
}
default:break;
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,POST
将用于您的创建,并将PUT
用于您的更新。
请注意,我使用了验证nullable
规则PUT
,这告诉请求对象该字段是可选的。
归档时间: |
|
查看次数: |
2735 次 |
最近记录: |