Nouveau dans Laravel 13.36. Certaines règles avaient déjà leur méthode, comme Rule::in() ou Rule::unique(). Les autres ne s'écrivaient qu'en chaîne : 'url:https', 'uuid:4', 'required_without:email'. L'éditeur ne les complète pas, une faute de frappe ne se voit qu'à l'exécution, et les paramètres sont découpés aux virgules.
Depuis Laravel 13.36
Chaque règle a sa méthode Rule:: :
use Illuminate\Validation\Rule; $request->validate([ 'telephone' => [Rule::requiredWithout('email')], 'site' => ['nullable', Rule::url()->protocols(['https'])], 'appareil' => [Rule::uuid()->version(4)], 'tags.*' => [Rule::distinct()->ignoreCase()], 'motDePasse' => ['required', Rule::confirmed()], ]);
Les règles qui prennent des noms de champs ou des valeurs les transmettent entières : une valeur qui contient une virgule n'est plus coupée.
Laravel 13.37 complète Rule::numeric() avec strict: true, l'équivalent de numeric:strict : un nombre JSON passe, le texte "10" non.
À faire
POST /api/inscriptions valide l'inscription à une conférence. Toutes ses règles fonctionnent, sauf une : la formule « Pro, avec repas » doit exiger allergenes_lus, et n'exige rien. La requête de l'onglet « Requêtes » le montre.
Réécrivez avec Rule:: toutes les règles qui prennent des paramètres. Les autres tests vérifient qu'aucune ne change de comportement en route.