Reputation: 167
In my controller, I have something like that:
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);
But I dont like this because it mass up my controller. I am looking for a way to use request validation instead.
Something like that would be my target:
public function store(XXRequest $request)
And put the logic for the validation inside.
Upvotes: 1
Views: 717
Reputation: 163748
Create a new request file:
php artisan make:request SomeRequest
Put the logic into the rules()
method:
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;
}
Then use it:
public function store(SomeRequest $request)
https://laravel.com/docs/5.5/validation#form-request-validation
Upvotes: 5