Je souhaite personnaliser le format du message d'erreur flashé, qui est reçu après que je fais quelque chose comme $this->validator($request->all())->validate();
Personnalisation du format d'erreur Flashed - Laravel 5.3
Pour une demande ajax, il répond avec:
{
"name": [
"The name field is required."
],
"email": [
"The email field is required."
],
}
Mais je veux que ça ressemble
{
"status": "fail",
"errors": {
"name": [
"The name field is required."
],
"email": [
"The email field is required."
],
}
}
J'ai lu le documentation sous Personnalisation de l'erreur Flashed Format et ajouté méthode formatValidationErrors
dans ma Controller
classe, mais il ne fait aucune différence.
public function formatValidationErrors(Validator $validator)
{
return ['status' => 'fail', 'errors' => $validator->errors()->getMessages()];
}
Il ne change pas même si je change la méthode formatValidationErrors
dans le trait Illuminate\Foundation\Validation\ValidatesRequests
d'origine
Je suis obligé de construire ont ce format dans tous les appels de demande et donc il y a un code-duplication. Ce serait bien si je pouvais simplement appeler $this->validator($request->all())->validate()
et il formats automatiquement selon mes besoins.
Je voulais juste dire, le stru cture fourni par laravel est en fait beaucoup plus utile que la variante que vous recherchez :) –
Edited ma question pour "Pourquoi j'ai besoin de cela?" – Kanav
La raison d'avoir deux niveaux d'erreurs de validation est que vous pouvez avoir plusieurs erreurs de validation pour un même champ (par exemple, le nom d'utilisateur est trop court et le nom d'utilisateur contient des caractères non autorisés). Je suggère de coller avec la structure originale qui a été générée par Laravel, et de le consommer, faites un adaptateur simple pour le convertir en une structure désirée. –