Je veux valider les formulaires côté client à Laravel. C'est là un moyen facile de le faire?
Vous pouvez utiliser le package Laravel 5 Validation Javascript . Ce paquetage active Javascript Valditaion dans vos vues basées sur JQuery Validation Plugin
Voici un exemple de base sur la façon de réutiliser vos règles de validation dans le contrôleur.
PostController.php
namespace App\Http\Controllers;
class PostController extends Controller {
/**
* Define your validation rules in a property in
* the controller to reuse the rules.
*/
protected $validationRules=[
'title' => 'required|unique|max:255',
'body' => 'required'
];
/**
* Show the edit form for blog post
* We create a JsValidator instance based on shared validation rules
* @param string $post_id
* @return Response
*/
public function edit($post_id)
{
$validator = JsValidator::make($this->validationRules);
$post = Post::find($post_id);
return view('edit_post')->with([
'validator' => $validator,
'post' => $post
]);
}
/**
* Store the incoming blog post.
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$v = Validator::make($request->all(), $this->validationRules]);
if ($v->fails())
{
return redirect()->back()->withErrors($v->errors());
}
// do store stuff
}
}
Dans la vue, vous devez simplement imprimer l'objet validateur transmis à la vue. N'oubliez pas que ce paquet dépend de JQuery et vous devez l'inclure avant cela jsvalidation.js
edit_post.blade.php
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<form class="form-horizontal" role="form" method="POST" action="" id="ddd">
<div class="form-group">
<label class="col-md-4 control-label">Title</label>
<div class="col-md-6">
<input type="text" class="form-control" name="title">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Array</label>
<div class="col-md-6">
<textarea name="body"></textarea>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- Scripts -->
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>
<!-- Laravel Javascript Validation -->
<script type="text/javascript" src="{{ asset('vendor/jsvalidation/js/jsvalidation.js')}}"></script>
{!! $validator !!}
Comme indiqué dans les commentaires, étant donné que Laravel est un framework backend, il ne fournit pas client side validation
prêt à l'emploi.
Il ne devrait pas.
Vous pouvez choisir un framework Javascript tel que Angularjs, emberjs, etc. avec une validation intégrée.
Si vous utilisez jQuery, vous pouvez utiliser n’importe quel plugin de validation jquery, en voici quelques-uns:
si vous utilisez bootstrap, vous pouvez utiliser http://1000hz.github.io/bootstrap-validator/
La validation Javascript de Laravel 5 ne fonctionne pas avec Laravel 5.3 pour le moment. Vous obtiendrez une "Méthode [getFiles] n'existe pas." erreur, vous pouvez résoudre ce problème en suivant ce problème https://github.com/proengsoft/laravel-jsvalidation/issues/190
De plus, cela ne fonctionne pas pour la validation de tableau car il est nouveau dans Laravel 5.3