Laravel 13.36 Nouveauté Publié le

Des règles de validation sans chaînes à paramètres

Toutes les règles de validation ont maintenant leur méthode Rule:: : l'éditeur les complète, et une valeur qui contient une virgule n'est plus coupée en deux.

Notions abordées : Validation

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.

D'où vient la fonctionnalité : la pull request d'origine.