在我的控制器中,我有类似的东西:
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);
但我不喜欢这样,因为它会使我的控制器大量增加。 我正在寻找一种方法来使用请求验证。
这样的事情将成为我的目标:
public function store(XXRequest $request)
并将验证的逻辑放在里面。
答案 0 :(得分:5)
创建一个新的请求文件:
<input type="text" id="datepicker">
将逻辑放入php artisan make:request SomeRequest
方法:
rules()
然后使用它:
public function rules()
{
switch (request('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;
}
https://laravel.com/docs/5.5/validation#form-request-validation