Comment ajouter des Règles de Validation lors de l'utilisation du Formulaire de Demande de Validation dans Laravel 5
Je suis en utilisant le formulaire de demande de validation de la méthode pour la validation de la demande dans laravel 5.Je voudrais ajouter ma propre règle de validation avec le formulaire de demande de validation de la méthode.Ma demande de classe est donnée ci-dessous.Je veux ajouter une validation personnalisée numeric_array avec les éléments du champ.
protected $rules = [
'shipping_country' => ['max:60'],
'items' => ['array|numericarray']
];
Mon cusotom fonction est donnée ci-dessous
Validator::extend('numericarray', function($attribute, $value, $parameters) {
foreach ($value as $v) {
if (!is_int($v)) {
return false;
}
}
return true;
});
Comment pouvez utiliser cette méthode de validation avec sur le formulaire de demande de validation dans laravel5?
Vous devez vous connecter pour publier un commentaire.
À l'aide de
Validator::extend()
comme vous le faites est en fait parfaitement bien, vous avez juste besoin de mettre ça dans un Fournisseur De Services comme ceci:Puis inscrire le fournisseur, en l'ajoutant à la liste dans
config/app.php
:Vous pouvez maintenant utiliser la
numericarray
règle de validation partout où vous voulezAlors que la réponse ci-dessus est correcte, dans beaucoup de cas, vous souhaiterez peut-être créer une validation personnalisée pour une demande de formulaire. Vous pouvez tirer parti de laravel FormRequest et utiliser l'injection de dépendance pour étendre la validation de l'usine. Je pense que cette solution est beaucoup plus simple que la création d'un fournisseur de services.
Ici est de savoir comment il peut être fait.
La accepté de répondre à des œuvres pour le mondial, les règles de validation, mais de nombreuses fois, vous serez la validation de certaines conditions qui sont très spécifiques à un formulaire. Voici ce que je recommande dans ces conditions (qui semble être un peu prévu de Laravel code source à la ligne 75 de FormRequest.php):
Ajouter un programme de validation de la méthode pour le parent Demande à vos demandes prolongera:
Maintenant, tous à vos demandes spécifiques ressemblera à ceci:
withValidator
: github.com/laravel/framework/commit/...Vous avez besoin de remplacer
getValidatorInstance
méthode dans votreRequest
classe, par exemple de cette façon:Validator::extend()
dans un fournisseur de services devrait être suffisant pour rendre la règle à l'échelle mondiale.config/app.php
sousproviders
.$this->app['translator']
au lieu de$this->app['validator']
?public function register() { $this->app['validator']->make('test', function ($attribute, $value, $parameters) { return false; }); }
boot
est mieux de toute façon 😉Règle Personnalisée Objet
Une façon de le faire est par l'utilisation de Règle Personnalisée Objet, de cette façon, vous pouvez définir autant de règle que vous le souhaitez sans avoir besoin de faire des changements dans les Fournisseurs et contrôleur/service pour définir de nouvelles règles.
Dans NumericArray.php
Puis dans le Formulaire de demande de
public function passes($attribute, $value) { return !is_null(\App\Address::whereUuid($value)->where('user_id', request()->user()->id)->first()); }
item => [new NumericArray($model)]
et à la règle de classeNumericArray
le lire dans le constructeur et initialiser une propriété de classe que vous pouvez utiliser danspasses
méthode:private $classProperty; public function __construct($model) { $this->classProperty = $model; }
Vous n'avez pas besoin d'étendre le programme de validation pour valider les éléments de tableau, vous pouvez valider chaque élément d'un tableau avec des "*" comme vous pouvez le voir dans
Tableau De Validation
Pour moi fonctionne, la solution qui nous donnent lukasgeiter, mais avec une différence que l'on crée une classe avec notre coutume validations ,comme ça, pour laravel 5.2.* L'exemple suivant est pour ajouter une validation pour une plage de date dans la deuxième date doit être égale ou plus grande que la première
Dans app/Fournisseurs de créer ValidatorExtended.php
Ok. maintenant permet de créer le Fournisseur de Service. Créer ValidationExtensionServiceProvider.php à l'intérieur de l'app/Fournisseurs, et nous le code
Maintenant nous dire Laravel chargement de ce Fournisseur de Service, ajouter les fournisseurs de tableau à la fin de config/app.php et
maintenant, nous pouvons utiliser cette validation dans notre demande en fonction des règles
ou dans Validator:faire
vous avez à remarquer que le nom de la méthode qui rend la validation est le préfixe de valider et est en chameau cas de style validateAfterOrEqual mais lorsque vous utilisez la règle de validation de chaque lettre majuscule est remplacé par un trait de soulignement et la lettre en lettre minuscule.
Tout cela je le prends https://www.sitepoint.com/data-validation-laravel-right-way-custom-validators// ici d'expliquer dans les détails. grâce à eux.
Toutes les réponses sur cette page vous permettra de résoudre le problème, mais... Mais le seul droit chemin par l'Laravel conventions est solution de Ganesh Karki
Un exemple:
Prenons un exemple d'un formulaire à remplir dans les Jeux Olympiques d'Été les événements – année et de la ville. D'abord en créer une forme.
Maintenant, nous allons créer une règle de validation qui vous pouvez entrer seulement l'année des Jeux Olympiques. Ce sont les conditions
Nous allons exécuter une commande:
php artisan faire:la règle OlympicYear
Laravel génère un fichier app/Rules/OlympicYear.php. Modifier ce fichier ressemble à ceci:
namespace App\Règles;
utilisation Éclairer\Contrats\Validation\Règle;
classe OlympicYear implémente la Règle
{
}
Enfin, comment nous les utilisons cette classe? Dans le contrôleur de store() la méthode que nous avons ce code:
Si vous souhaitez créer de validation par Laravel conventions de suivre le tutoriel en lien ci-dessous. Il est facile et très bien expliqué. Il m'a beaucoup aidé. Lien pour l'original tutoriel est ici Tutoriel lien.