Laravel #7 - Gestion des requêtes

Edité le 13/08/2020

Pour commencer ce tutoriel, nous allons ajouter un formulaire dans notre vue blade.

Pour l'exemple, je vous ai mis en place un petit formulaire avec bootstrap :


<html>
<head>
    <title>title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
head>

<body>
    <div class="mt-5 border rounded p-4 col-4 bg-light mx-auto ">
        <h3 class="text-center mt-2">Enregistrer un articleh3>
        <form method="POST" class="mt-4" action="{{ route('back.articles.create') }}">
            @csrf
            <div>
                <input type="text" placeholder="Titre de l'article" name="article_title" class="form-control mb-3">
            div>
            <div>
                <textarea placeholder="Contenu de l'article" name="article_content" rows="4"  class="form-control mb-3">textarea>
            div>
            <button type="submit" class="btn btn-primary">Enregistrerbutton>
        form>
    div>
body>
html>


Ce qu'il faut retenir de ce formulaire
  • Il est préférable de mettre un action dans la déclaration du
  • Il est obligatoire de mettre @csrf dans le formulaire, grâce à ceci blade pourra mettre en place un input caché avec la valeur du csrf token, indispensable pour les requêtes
  • Evidemment on ajoute bien un name sur les  afin de bien le retrouver dans la requête

 

Créons la route qui va recevoir la requête

Nous allons créer la route qui est utilisé dans le

Pour ce, il suffit de se rendre dans le fichier routes/web.php et d'ajouter

Route::post('/article/create', 'ArticlesController@create')->name('back.articles.create');


Je vous conseil d'utiliser le name() lorsque vous déclarez des routes, il permettra dans vos pages blade d'utiliser la fonction route() comme dans l'exemple ci-dessus. Pourquoi je vous conseil de faire ça ? Si vous devez changer d'url pour x raison, vous n'aurez pas besoin de la modifier de partout dans votre code.

Informations : Pour les noms de route, j'utilise view ou back en fonction de ce que je souhaite faire avec cette route, puis le nom de ce qui est concerné par cette route, et enfin l'action qui va se passer avec ce model

 

Récupérer et traiter notre requête

Dans notre ArticlesController, dans la fonction create(), nous allons commencer par récupérer la requête :

public function create(Request $request)

La class Request est importée par défaut dans le controller

 

Ensuite nous allons vérifier que la requête possède toutes les valeurs. Il existe plusieurs méthodes pour vérifier les requêtes, personnelement je préfère utiliser celle avec le Validator, l'avantage est qu'il est plus facile d'éxécuter des actions quand la requête n'est pas bonne.

Nous allons importer la classe Validator en haut du controller: use Illuminate\Support\Facades\Validator;

Après, nous allons vérifier que la requête possède bien un titre et du contenu :

$validator = Validator::make($request->all(), [
    "article_title" => ['required'],
    "article_content" => ['required'],
]);


Pour finir, nous allons gérer si la requête n'est pas bonne:

if ($validator->fails()) {
    return redirect()->back();
}


Si la requête n'est pas bonne, nous allons seulement renvoyé l'utilisateur sur la page précédente, donc le renvoyer sur la vue.

 

Enregistrer les valeurs de la requête

Pour remplacer les valeurs en dures du précédent tutoriel, il suffit de faire $request->keyword

$article = new Article;
$article->user_id = 1;
$article->title = $request->article_title; 
$article->content = $request->article_content;
$article->save();

 

Voilà, vous pouvez désormais créer enregistrer des informations d'un formulaire dans la base de donnée.

Dans le prochain tutoriel, nous allons voir comment récupérer nos articles pour les afficher dans la vue.

Cet article a été vu 282 fois
Laisser un commentaire:
Laissez le premier commentaire..
Laravel Débutant

Laravel est un framework web open-source écrit en PHP respectant le principe modèle-vue-contrôleur et entièrement développé en programmation orientée objet. Laravel est distribué sous licence MIT, avec ses sources hébergées sur GitHub. En peu de temps, une communauté d'utilisateurs du framework s'est constituée, et il est devenu en 2016 le projet PHP le mieux noté de GitHub. Laravel reste pourtant basé sur son grand frère Symfony, pour au moins 30 % de ses lignes (utilisation de "Symfony component").

# # # #