Laravel 5 validation du modèle
J'ai le modèle comme ceci
class test extends Model
{
public $rules = [
'title' => 'required',
'name' => 'required',
];
protected $fillable = ['title','name'];
}
Et contrôleur comme ce
public function store(Request $request)
{
$test=new test; ///create model object
$validator = Validator::make($request->all(), [
$test->rules
]);
if ($validator->fails()) {
return view('test')->withErrors($validator)
}
test::create($request->all());
}
Validation afficher le message d'erreur comme ceci
L'0 champ est requis.
Que je veux montrer ce
Le nom de domaine est nécessaire.
Le titre de champ est requis.
OriginalL'auteur paranoid | 2016-05-15
Vous devez vous connecter pour publier un commentaire.
- Je le résoudre
peut-être que vous pouvez écrire vous-même une classe d'assistance?
OriginalL'auteur paranoid
Vous pouvez consulter également la validation de votre modèle, et jetant un ValidationException, qui seront traitées comme d'habitude dans votre contrôleur (avec l'erreur sac, etc). E. g:
Ensuite dans mon Controller:
Enfin dans ma base de classe de service
Si le modèle est valide il continue comme d'habitude. Si il y a une erreur de validation, il va revenir à la page précédente avec les erreurs de validation dans le flash de données d'erreur/sac.
Je vais très probablement se déplacer à l' $personne->valider() la méthode de ma classe de service, cependant il faudra encore travailler comme indiqué ci-dessus.
OriginalL'auteur Fabian Snaith
Que vous faites de la mauvaise façon. Le
rules
tableau doit être dans votre contrôleur ou mieux dans un Formulaire De Demande.Permettez-moi de vous montrer une meilleure approche:
Créer un nouveau Formulaire de Demande de fichier avec
php artisan make:request TestRequest
.Exemple
TestRequest
classe:Injecter de la demande objet dans votre méthode de contrôleur.
Je suis de Ruby on Rails arrière-plan, et ont utilisé des Laravel pour un couple d'années, personnellement, je préfère l'approche de valider au niveau du modèle pour deux raisons principales: 1. Les modèles peuvent être modifiés à partir de nombreux endroits autres que les entrées de l'utilisateur, afin de maintenir l'intégrité des données n'est pas pour seule interface utilisateur, mais tout le monde, y compris l'ensemble des développeurs du projet. 2. Demande personnalisée et les Validateurs sont uniquement pour les attributs que vous avez obtenu des contrôleurs, ils n'ont pas de valider l'ensemble des attributs du modèle, de dire, ce qui, si le bon d'achat de 2 articles fait l'inventaire devenir -1.
J'aimerais aussi savoir pourquoi Laravel est-il de cette façon. Alors je pense que cette réponse est bonne en général j'ai marqué vers le bas pour dire que c'est "mieux" - "mieux" est subjectif
Ici, l'utilisateur a voulu mettre les règles dans le modèle et non pas dans le contrôleur ou le formulaire de demande. Parce que, pour la plupart, nous l'écriture des règles dans les modèles, comme les cadres proposés.
Selon Jeffrey Façon, c'est le "préféré" la méthode, car il permet d'autorisation de vérification. Cependant il n'y a aucune raison pourquoi les règles ci-dessus méthode ne peut pas récupérer ses règles à partir d'une propriété statique du modèle. Ainsi, au lieu de
public $rules
il deviendraitpublic static $rules
et la méthode ci-dessus serait le juste retourMyModel::$rules
OriginalL'auteur codedge