Laravel programme de validation déclenche une exception au lieu de rediriger le dos
Après j'ai mis à Laravel 5.2 j'ai rencontré un problème avec le laravel validateur. Quand je veux valider les données dans un contrôleur prendre l'exemple de ce code.
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class ContactController extends Controller
{
public function storeContactRequest(Request $request)
{
$this->validate($request, [
'_token' => 'required',
'firstname' => 'required|string'
'lastname' => 'required|string'
'age' => 'required|integer',
'message' => 'required|string'
]);
//Here to store the message.
}
}
Mais de toute façon quand je rentre invalide de données, il ne sera pas rediriger me ramène à la page précédente et flash certains messages de la session, mais il va déclencher une exception et me donne une page d'erreur 500 en arrière.
C'est l'exception-je obtenir.
J'ai lu dans la documentation qui l'ValidationException est de nouveau au lieu de la HttpResponseException mais je ne sais pas s'il a quelque chose à voir avec cela.
[2016-01-05 11:49:49] production.ERROR: exception 'Illuminate\Foundation\Validation\ValidationException' with message 'The given data failed to pass validation.' in /home/vagrant/Code/twentyre-webshop/vendor/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php:70
Et quand j'utilise une autre classe de requête il suffit de rediriger le dos avec les messages d'erreur. Il me semble seulement de la validation de la méthode utilisée dans le cadre d'un contrôleur est affecté par ce comportement.
Mais comment puis-je attraper l'exception lorsque je l'utilise comme cela dans un contrôleur?
L'envelopper dans un try/catch de la clause
Merci j'ai corrigé, je ne savais pas qu'il était sur le but qu'il n'a pas rediriger automatiquement.
Comment avez-U le résoudre? Où avez-vous fait de redirection?
OriginalL'auteur DB93 | 2016-01-05
Vous devez vous connecter pour publier un commentaire.
Mise à jour de votre
App\Exceptions\Handler
classeMoi aussi je vous recommande de lire les docs comment migrer de laravel 5.2, parce qu'il y avait quelques modifications importantes. Par exemple,
ValidatesRequests
trait jetteIlluminate\Foundation\Validation\ValidationException
au lieu deIlluminate\Http\Exception\HttpResponseException
La Documentation comment migrer à partir de Laravel 5.1 5.2
J'ai ajouté le ValidationException à la dontReport bien, mais il n'a pas de résoudre mon problème. J'ai lu la migration des documents et appliqué toutes les modifications apportées à mon projet, mais c'est la seule chose qui est un échec pour moi.
OriginalL'auteur xAoc
Exemple de laravel docs. Vous pouvez utiliser le Validateur de façade, pour personnalisé la validation échoue comportement
OriginalL'auteur Nickstery
C'est la façon dont je le manipuler dans Laravel 5.3 (en modifiant
Handler.php
)https://stackoverflow.com/a/42852358/3107185
OriginalL'auteur Rav
Pour mon but, j'ai été construire une API complètement l'application Laravel 5.3 qui j'avais mis à jour manuellement à partir de Laravel 5.1. et j'ai juste besoin Laravel pour répondre de retour avec les erreurs de validation qui avait besoin de réparations sur mon FormRequest.
En ajoutant cette ligne:
après celui-ci:
Dans
App\Exceptions\Handler.php
a fait le tour pour moi et retourné prévu erreurs de validation lors de l'utilisation de FormRequest de validation.Veuillez voir mes commentaires ici: @ratatatKE commentaires sur github
OriginalL'auteur Moses Ndeda
Pour laravel 5.2 j'ai dû ajouter cette ligne:
Dans App\Exceptions\Handler.php et les en-têtes suivants:
OriginalL'auteur Eduardo Lemus
J'ai eu le même problème lorsque la mise à jour 4.2, 5.3.
Cette réponse a fonctionné pour moi.
Remplacer la méthode de la app/Exceptions/Handler.php
Réponse que l'on trouve ici: https://laracasts.com/discuss/channels/laravel/whoops-20-laravel-52
J'ai eu le même problème que la question. "Laravel programme de validation déclenche une exception au lieu de rediriger le dos". C'est le problème que j'ai. Je l'ai fixée avec la solution ci-dessus. Il pourrait y avoir plus d'une cause de cette erreur, par conséquent, plus d'une réponse. J'ai posté pour aider quelqu'un qui est aux prises avec cette erreur, comme je l'étais.
OriginalL'auteur Robbie