Validation Form Avec FormRequst
Validation Form Avec FormRequst
Validation Form Avec FormRequst
classe FormRequest
Par exemple, si vous avez un site Web de blog où votre utilisateur peut se
connecter et s’inscrire. Vous créez un formulaire de connexion et
d’inscription maintenant lorsque l’utilisateur entre les détails du formulaire et
soumet la demande au serveur principal.
Cette requête dans laravel va lancer une étape différente. Vérifions le flux
de requête :
Créer un formulaire de contact en utilisant laravel et valider les
données :
Pour comprendre le fonctionnement de la validation des laravels, il
faudrait créer un formulaire type et le valider. Disons que vous avez un
formulaire de contact sur votre site.
Vous voulez créer une page où vous voulez afficher le formulaire de
contact et ensuite effectuer la validation backend de laravel en utilisant
la classe request de laravel. Pour créer une page de contact, nous
devons suivre les instructions ci-dessous :
Définir la route GET/contact-us pour afficher notre formulaire
Définir la route POST/contact-us pour valider l’envoi de formulaire
Créer ContactUsController avec des méthodes de création
(create) et de stockage (store)
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::prefix('site')->group(function () {
Maintenant que nous avons décidé quels seraient les routes pour notre
page de contact, nous devons pointer la route vers les méthodes de
contrôleur appropriées.
namespace App\Http\Controllers;
use Illuminate\Http\Response;
use Illuminate\Http\RedirectResponse;
use App\Http\Requests\ContactFormRequest;
return response()
->redirectToRoute('contact-us') // redirect user to GET /contact-us page
->withErrors($request) // pass all validation errors
->withInput(); // pass form data
}
}
effectue la validation
redirige l’utilisateur vers la page de formulaire Contactez-us avec
toute erreur de formulaire ou les données de formulaire déjà
soumises
Enfin, nous devons créer une vue pour notre formulaire de contact. Créons
un fichier appelé contact-us.blade.php sous resources/views avec le
contenu suivant.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}
* {box-sizing: border-box;}
input[type=text], textarea {
width: 100%;
padding: 12px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
margin-top: 6px;
margin-bottom: 16px;
resize: vertical;
}
input[type=submit] {
background-color: #04AA6D;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #45a049;
}
.container {
border-radius: 5px;
background-color: #f2f2f2;
padding: 20px;
margin: 0 auto;
width: 50%;
}
</style>
</head>
<body>
<div class="container">
<h3>Contact Form</h3>
<br>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<label for="email">Email</label>
<input type="text" id="email" name="email" placeholder="Your email address.."
value="{{ old('email') }}">
<label for="subject">Subject</label>
<input type="text" id="subject" name="subject" placeholder="Enter Subject for
contacting" value="{{ old('subject') }}">
<label for="comments">Comments</label>
<textarea id="comments" name="comments" placeholder="Write something.."
style="height:200px">{{ old('comments') }}</textarea>
</body>
</html>
La Classe ContactFormRequst
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|email',
'comments' => 'required|string|min:10',
'subject' => 'required|string|min:5|max:45',
];
}
}
Maintenant, que nous avons une route valide qui pointe vers des méthodes
de contrôleur valides et aussi que nous avons créé une classe séparée de
validation de formulaire, il est temps de tester nos changements. Ouvrez le
navigateur et cliquez sur page http://localhost/site/contact-us :
Qu’avons-nous appris dans ce TP ?
Comment créer une nouvelle route
comment lier une route à la méthode du contrôleur
comment créer une classe de validation distincte
classe de validation :
la méthode authorize : cette méthode est le meilleur endroit pour
vérifier si l’utilisateur est autorisé à accéder au formulaire ou non
méthode
rules : affiche la liste des champs de formulaire avec des règles pour
vérifier leur validation
Comment préremplir les données du formulaire avec les anciennes
données du formulaire envoyé {{old (…) }} :
Si vous voulez explorer les règles disponibles que vous pouvez utiliser pour
effectuer la validation du formulaire, voir le site de Laravel .