Shokouh Dareshiri
Shokouh Dareshiri

Reputation: 936

required if in Laravel

I'm using required if in Laravel validation, but it doesnt work. what is my mistake?

public function rules()
{
    if (!empty($this->game_id)) {
                $game = Game::find($this->game_id);
                $game_type = $game->type;
            } else {
                $game_type = 'sport';
            }

   return [
                'game_id' => 'required',
                'platform_id' => 'required_if:' . $game_type . ',==,electronic',
          ]
}

Upvotes: 2

Views: 10869

Answers (3)

Shokouh Dareshiri
Shokouh Dareshiri

Reputation: 936

I solved it in my own rules as below:

if (!empty($this->game_id)) {

      $game = Game::find($this->game_id);
      $game_type = $game->type;

          if($game_type == 'electronic'){
                  $required = 'required';
                } else{
                    $required = ' ';
                }

          }

return [
         'game_id' => 'required',
         'platform_id' => $required,
       ]

Upvotes: 1

Iftikhar uddin
Iftikhar uddin

Reputation: 3182

Try the below code

public function rules()
{
    if (!empty($this->game_id)) {
                $game = Game::find($this->game_id);
                $game_type = $game->type;
            } else {
                $game_type = 'sport';
            }

   return [
                'game_id' => 'required',
                'platform_id' => 'required_if: . $game_type . ,==,electronic',
          ]
}

The syntax for required_if is 'field_name' => 'required_if:columnName:value'. What you're doing is wrapping the columnName in '' single quotes!

Upvotes: 1

matiit
matiit

Reputation: 8017

You don't need the whole expression, the correct format is as follows:

 return [
                'game_id' => 'required',
                'platform_id' => 'required_if:columnName:value',
          ];

Upvotes: 5

Related Questions