Mon contrôleur comme ceci:

<?php
use App\Http\Requests\StoreReceiveOrderRequest;
class SellController extends Controller
{
    public function receiveOrder(StoreReceiveOrderRequest $request)
    {
        dd($request->all());
        ...
    }
}

Avant d'exécuter l'instruction dans la méthode receiveOrder, il vérifiera les règles sur le StoreReceiveOrderRequest

Le StoreReceiveOrderRequest comme ceci:

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreReceiveOrderRequest extends FormRequest
{
    public function rules()
    {
        return [
            'is_follow_up'=>'required',
            'note'=>'max:300' // I want to make this to be required if is_follow_up = n
        ];
    }
}

Le résultat de dd($request->all());, il y a 2 résultats, selon l'entrée utilisateur

Si is_follow_up = y, le résultat comme ceci:

Array
(
    [is_follow_up] => y
)

Si le est suivi = in, le résultat comme ceci:

Array
(
    [is_follow_up] => n
    [note] => test
)

Si is_follow_up = n, je veux faire la note est obligatoire

Si is_follow_up = y, la note n'est pas obligatoire

Il semble qu'il faut ajouter une condition aux règles

Comment puis-je le faire?

1
Success Man 25 nov. 2017 à 18:17

3 réponses

Meilleure réponse

Il existe déjà une règle de validation qui fait exactement cela. La documentation Laravel pour validation répertorie toutes les règles disponibles.

'note' => 'required_if:is_follow_up,n|...'

Laravel 5.3 - Docs - Validation - Règle - obligatoire si

3
lagbox 25 nov. 2017 à 16:22

Lisez la documentation Laravel pour la liste de toutes les règles de validation disponibles.

'note' => 'required_if:is_follow_up,n|...'
-1
Akram Wahid 27 nov. 2017 à 09:27

Changez simplement votre validation comme suit:

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
    class StoreReceiveOrderRequest extends FormRequest
    {
       public function rules()
       {
         $rules = ['is_follow_up'=>'required',
           ];

         if (Input::get('is_follow_up')=='n') {
          $rules += [
             'note'=>'max:300'
          ];
         }
       }
    }
1
Sohel0415 25 nov. 2017 à 15:36
47487476