Different validation rules setting Hi all,
I have a Campaign table to store different campaigns like NewYear2019, SummerTime etc. In the Campaign CRUD I want to use separate validation rules for each campaign types.
I CANNOT create functions like these in the CampaignController
public function store(NewYear2019Request $request) {}
public function store(SummerTimeRequest $request) {}
How do architecture it?
Thanks in advance,
Saneesh
you don't need to create multiple Validation request for each Campaign Type,,
just create one Validation request and inside it you have the full access for the request..
inside the rules method you can check for the Campaign type and then create the
validation array
public function rules()
{
if($this['campaing_type'] == 'NewYear2019')
return [
'year' => 'required',
];
else if($this['campaing_type'] == 'SummerTime')
return [
'summer' => 'required',
];
}
Hello BishoyWagih,
Thank you for the quick response!
But, how do I get the scope for $request in the rules()?
and can I use the storing like this:
public function store(CampaignRequest $request) {
try {
$campaign = Campaign::create($request->all());
return response($campaign, 201);
} catch (Exception $e) {
Log::error($e->getMessage());
throw new HttpResponseException(response()->error());
}
}
Regards
Saneesh
try pass the Campaign type with the submitted form..
so you can make the check inside the CampaignRequest
$request shows as undefined variable in rules() of CampaignRequest extended from FormRequest.
sry it's my mistake use $this instead of $request in CampaignRequest
Thank you very much! it is working!
Please sign in or create an account to participate in this conversation.