Reputation: 936
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
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
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
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