Laravel 5.2 erreurs de validation ne figurant pas
J'essaie d'obtenir des erreurs de validation de montrer dans Laravel.
J'ai un UserController configurer comme suit:
<?php
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
//Use Request;
Use Flash;
Use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function showProfile($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
public function store(Request $request) {
$this->validate($request, [
'email' => 'required|unique:users|email|max:255',
]);
if($this) {
$input = Request::all();
User::create($input);
return redirect('/');
}
else {
return redirect('/')->withErrors($validator);
}
}
}
De mon point de vue (layout.blade.php), j'ai inclus:
@if (count($errors) > 0)
@foreach ($errors->all() as $error)
{{!! $errors !!}}
@endforeach
@endif
De compte pour l'itinéraire, j'ai:
Route::group(['middleware' => ['web']], function () {
Route::get('/', function (){
return view('home');
});
});
Malheureusement, quand j'entre dans le "mauvais" des données qui ne doivent pas être vérifié, je ne suis pas le voir de toute erreur (mais elle n'est pas stockée dans la base de données, donc il n'y a que).
Une autre note, lorsque la lame modèle est rendu, je vois une "}" support dont je ne sais pas pourquoi c'est là.
OriginalL'auteur user1072337 | 2016-01-19
Vous devez vous connecter pour publier un commentaire.
Il y a quelques choses qui cloche ou ce qui peut être amélioré. La méthode de magasin sur le UserController a beaucoup de problèmes bizarres.
$this
sera toujours vrai, car les objets sont vraies en php. Aussi, vous pouvez passer$validator
enwithErrors
qui n'a pas de sens car il n'y a pas de variablevalidator
.La
validate
méthode lève uneIlluminate\Foundation\Validation\ValidationException
si il y a une erreur de validation. Cette exception doit être répertorié dans la$dontReport
variable d'instance dansApp\Exceptions\Handler
comme on le voit ci-dessous:Si vous avez modifié ces valeurs, supprimé ou modifié les
ValidatesRequest
trait cassé cette fonctionnalité.Votre rapport d'erreurs de code n'est pas correct non plus:
Il y a 3 changements ici. J'ai d'abord supprimé l'extérieur des erreurs de vérification de la taille, ce n'est pas réellement quoi que ce soit vous. Ensuite, j'ai corrigé votre extra
}
erreur, la syntaxe de l'onu en fuite de données est{!! $errors->first() !!}
. Enfin, j'ai appelé->first()
ceci renvoie à la première erreur associée à ce domaine particulier.Je pense qu'il est important de noter que l'exception de validation permettra de créer une réponse de redirection vers la page précédente. La logique de la détermination de la page précédente peut être trouvé dans
Illuminate\Routing\UrlGenerator::previous()
.OriginalL'auteur Logan Bailey
Dans laravel version 5.2.41, le middleware web est jeté.
Implique l'ajout de la routes à l'intérieur de
Route::group(['middleware' => ['web']], function () {
va faire la validation de ne pas fonctionner.Même qui s'est passé pour moi. Passé 2 heures à essayer de comprendre moi-même 🙂
OriginalL'auteur Mirza Vu
Les erreurs de bloc doit être:
En supposant que vous êtes en utilisant Bootstrap pour les alertes.
Vous aussi vous n'avez pas
$validator
défini. Vous avez besoin de faire quelque chose comme ceci:Au lieu de
$this->validate()
.Cela devrait le faire.
il fonctionne pas pour moi
OriginalL'auteur Chris