Kiyarash
Kiyarash

Reputation: 2578

Laravel exists validation if the given value is not zero

This is my situation:

Assume I have a radio input in my html form which it's value must to exists in a table only IF user check one of them, else the value have to be zero

this my structure:

<div class="inputGroup">
    <input id="first_change1" name="first_change" type="radio" value="{{ $game->teamOne->id }}" {{ old('first_change') == $game->teamOne->id ? 'checked="checked"' : '' }} />
    <label for="first_change1" class="farsi">{{ $game->teamOne->name }}</label>
</div>
<div class="inputGroup">
    <input id="first_change2" name="first_change" type="radio" value="{{ $game->teamTwo->id }}" {{ old('first_change') == $game->teamTwo->id ? 'checked="checked"' : '' }} />
    <label for="first_change2" class="farsi">{{ $game->teamTwo->name }}</label>
</div>
<div class="inputGroup">
    <input id="first_change3" name="first_change" type="radio" value="0" {{ old('first_change') == "0" ? 'checked="checked"' : '' }} />
    <label for="first_change3" class="farsi">None of them</label>
</div>
@if( $errors->has('first_change'))
    <h6 class="alert alert-danger farsi text-danger rtl text-right">
        {{ $errors->first('first_change') }} <i class="fa fa-2x fa-arrow-up fleft" style="bottom: 5px !important;"></i>
    </h6>
@endif

And this is my current validation for this field:

'first_change' => 'required|exists:fc_teams,id',

But I need something like this:

'first_change' => 'required|[IF VALUE IS NOT -0-; THEN]exists:fc_teams,id',

Upvotes: 2

Views: 597

Answers (1)

Jerodev
Jerodev

Reputation: 33186

You could build your validation conditionally:

$first_change_validation = [
    'required',
];
if ($request->get('first_change') == 0) {
    $first_change_validation[] = 'exists:fc_teams,id';
}

And then use this array in your validation:

$this->validate($request, [
    'first_change' => $first_change_validation,
]);

Upvotes: 2

Related Questions