Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Saneesh's avatar

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

0 likes
7 replies
BishoyWagih's avatar
Level 13

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',
    ];

}
1 like
Saneesh's avatar

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

BishoyWagih's avatar

try pass the Campaign type with the submitted form..

so you can make the check inside the CampaignRequest

Saneesh's avatar

$request shows as undefined variable in rules() of CampaignRequest extended from FormRequest.

BishoyWagih's avatar

sry it's my mistake use $this instead of $request in CampaignRequest

Saneesh's avatar

Thank you very much! it is working!

Please or to participate in this conversation.