Pour effectuer la validation de tableaux avec Laravel, lorsqu’ils sont passés en paramètres d’une requête, on peut se servir des règles existantes fournies dans le framework. Cela ne nécessite que quelques lignes de code que l’on peut découvrir ensemble.
Il faut savoir que Laravel permet aussi bien de valider des tableaux classiques que des tableaux imbriqués (appelés Nested arrays).
Valider un tableau contenant des codes client
Le contexte: nous souhaitons générer un export pour une liste de codes client. Ces codes sont présentés sous la forme « Cxxxxxx » où les x représentent le numéro du client. Lorsqu’on appelle la méthode de notre microservice, on passe les paramètres sous cette forme:
?listCodes[]=C000001&listCodes[]=C000002&...
Dans la classe de notre contrôleur, voici ce qu’on aura:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use \Illuminate\Support\Facades\Validator;
class ExportsController extends Controller
{
public function exportFile(Request $request)
{
$validator = Validator::make($request->all(), [
'listCodes' => 'required|array',
'listCodes.*' => 'required|string|regex:/^C[0-9]{6}$/'
]);
if ($validator->fails())
{
return response()->json([
"errors" => $validator->errors()->all()
], 400);
}
// Action code...
}
}
On crée donc une instance de la classe Validator en passant en paramètres les éléments de la requête, suivis des règles. Dans ces règles, on retrouve les éléments suivants:
- listCodes : ce premier élément indique qu’on va valider la variable en elle-même. On demande à ce que ce soit un tableau donc on spécifie la règle « array« . On indique également que la variable est obligatoire.
- listCodes.* : on spécifie la règle à appliquer pour chacun des éléments du tableau. Dans ce cas-ci, on demande à ce qu’ils soient tous nécessaires, que ce soient des chaines de caractères respectant une expression régulière (règle « regex« ).
Si les règles ne sont pas respectées, on renverra une réponse au format JSON avec l’ensemble des erreurs.
Validation des clés
Il est possible de spécifier les clés à valider lors de l’utilisation de la règle « array« .
Validation de tableaux imbriqués
Pour cela vous pouvez lire la documentation très détaillée ici.
Bon développement!