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?
3 réponses
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
Lisez la documentation Laravel pour la liste de toutes les règles de validation disponibles.
'note' => 'required_if:is_follow_up,n|...'
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'
];
}
}
}
De nouvelles questions
laravel
Laravel est un framework web PHP gratuit et open-source, créé par Taylor Otwell et destiné au développement d'applications web suivant le modèle architectural modèle-vue-contrôleur (MVC) et basé sur Symfony. Le code source de Laravel est hébergé sur GitHub et sous licence selon les termes de la licence MIT.