{"id":126,"date":"2021-03-12T10:36:07","date_gmt":"2021-03-12T10:36:07","guid":{"rendered":"https:\/\/kaay-coder.2sweb.sn\/kc\/?page_id=126"},"modified":"2022-04-03T01:18:41","modified_gmt":"2022-04-03T01:18:41","slug":"laravel","status":"publish","type":"page","link":"https:\/\/kaay-coder.2sweb.sn\/kc\/frameworks\/laravel\/","title":{"rendered":"Laravel"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"126\" class=\"elementor elementor-126\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-01f7d48 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"01f7d48\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d555ae\" data-id=\"0d555ae\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-10806e3 elementor-widget elementor-widget-image\" data-id=\"10806e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"409\" src=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/shutterstock_1119270824_2-1-1024x409.jpg\" class=\"attachment-large size-large wp-image-728\" alt=\"\" srcset=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/shutterstock_1119270824_2-1-1024x409.jpg 1024w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/shutterstock_1119270824_2-1-300x120.jpg 300w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/shutterstock_1119270824_2-1-768x307.jpg 768w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/shutterstock_1119270824_2-1-1536x613.jpg 1536w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/shutterstock_1119270824_2-1.jpg 1911w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-410f2e2 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"410f2e2\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-5c45c44\" data-id=\"5c45c44\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3999c4b elementor-widget elementor-widget-toggle\" data-id=\"3999c4b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"toggle.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-toggle\">\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6031\" class=\"elementor-tab-title\" data-tab=\"1\" role=\"button\" aria-controls=\"elementor-tab-content-6031\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Qu'est ce que Laravel ?<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6031\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"region\" aria-labelledby=\"elementor-tab-title-6031\"><p>Laravel est un Framework web open-source \u00e9crit en PHP respectant le principe mod\u00e8le-vue-contr\u00f4leur et enti\u00e8rement d\u00e9velopp\u00e9 en programmation orient\u00e9e objet. Laravel est distribu\u00e9 sous licence MIT, avec ses sources h\u00e9berg\u00e9es sur GitHub. \u00a0<span class=\"fontstyle0\">De plus, Laravel utilise la toute derni\u00e8re version de PHP 5.3 et a fr\u00e9quemment des patches de disponibles avec de nouveaux \u00e9l\u00e9ments et des mises \u00e0 jour qui r\u00e8glent les probl\u00e8mes, ce qui prouve qu\u2019il est en constante \u00e9volution et am\u00e9lioration. En ce moment, il se base sur \u00ab Composer \u00bb, le meilleur outil de d\u00e9pendance qui g\u00e8re des projets en PHP jusqu\u2019\u00e0 maintenant<\/span>\u00a0<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6032\" class=\"elementor-tab-title\" data-tab=\"2\" role=\"button\" aria-controls=\"elementor-tab-content-6032\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">MVC<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6032\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"region\" aria-labelledby=\"elementor-tab-title-6032\"><p><span class=\"fontstyle1\">Laravel se base effectivement sur le patron de conception MVC, c\u2019est-\u00e0-dire mod\u00e8le vue-contr\u00f4leur. Le mod\u00e8le interagit avec la base de donn\u00e9es, les regroupe, traite et g\u00e8re les donn\u00e9es. La vue s\u2019occupe principalement de faire afficher ce que le mod\u00e8le renvoie. Ensuite, elle s\u2019occupe de recevoir toute interaction de l\u2019utilisateur (hover, clic de souris, entr\u00e9e de texte, etc.). Ce sont ces actions-l\u00e0 que le contr\u00f4leur g\u00e8re. Celui-ci prend en charge de synchroniser le mod\u00e8le et la vue. Il capte toutes les activit\u00e9s de l\u2019utilisateur et, en fonction de, il actionne les changements \u00e0 effectuer sur le site. En s\u00e9parant les composants d\u2019un site internet en ces trois cat\u00e9gories, cela permet une clart\u00e9 de l\u2019architecture des dossiers et simplifie grandement la t\u00e2che aux d\u00e9veloppeurs.<\/span> <\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6033\" class=\"elementor-tab-title\" data-tab=\"3\" role=\"button\" aria-controls=\"elementor-tab-content-6033\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Installation de Laravel<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6033\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"region\" aria-labelledby=\"elementor-tab-title-6033\"><ul><li><span class=\"fontstyle2\">\u00a0Composer<br \/><\/span><span class=\"fontstyle3\">La premi\u00e8re \u00e9tape serait d\u2019installer le Composer dont laravel utilise. Cependant, qu\u2019est ce qu\u2019un composer? Et bien c\u2019est assez simple, Composer trouve les fichiers PHP qu\u2019on a besoin dans un projet. Il va les chercher et les installer \u00e0 la bonne place, pour nous. Comme Laravel est un Framework PHP, il est tr\u00e8s pratique de l\u2019utiliser pour bien partir un projet.<\/span><\/li><li><span class=\"fontstyle0\">Installation de Composer<br \/><\/span><span class=\"fontstyle2\">On peut le t\u00e9l\u00e9charger sur le site getcomposer.org ou directement sur le site de<br \/>laravel.com. Ce Composer a une entente avec Laravel et va chercher tous les fichiers que Laravel utilise pour bien fonctionner. En installant le Composer, on pourra installer beaucoup plus facilement et rapidement le Framework Laravel, sans faire d\u2019erreur. Une fois le fichier \u00ab Composer-Setup.exe \u00bb est install\u00e9 dans l\u2019ordinateur, on peut maintenant installer Laravel.<\/span><\/li><li><span class=\"fontstyle0\"><span class=\"fontstyle0\">Installation de Laravel<br \/><\/span><\/span><br \/><h4 id=\"r-2479319\" class=\"\" data-claire-element-id=\"4774432\">Installation avec Laravel Installer<\/h4><p id=\"r-2478244\" class=\"\" data-claire-element-id=\"3654760\">Une autre solution pour installer Laravel consiste \u00e0 utiliser l&#8217;installeur. Il faut commencer par installer globalement l&#8217;installeur avec Composer<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">\u00a0<br \/><\/span><\/p><\/li><li><pre id=\"r-2478244\" data-claire-element-id=\"3654760\"><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">composer global require \"laravel\/installer=~1.1\"<\/span><\/pre><\/li><li><p id=\"r-2478244\" class=\"\" data-claire-element-id=\"3654760\"><span class=\"fontstyle2\">Maintenant, il faut savoir o\u00f9 installer le projet. Je vous conseille de travailler en<br \/>localhost, avant de travailler sur le serveur lui-m\u00eame, pour simple efficacit\u00e9. Ouvrez une fen\u00eatre Windows de o\u00f9 vous voulez mettre le dossier de projet et faites click-droit, si vous avez bien install\u00e9 le Composer, vous devriez voir dans la liste \u00ab use Composer here \u00bb. Vous le s\u00e9lectionnez et une fen\u00eatre de commande va appara\u00eetre. Vous devez inscrire la ligne de commande cidessous :<\/span><\/p><\/li><li><pre id=\"r-2478244\" data-claire-element-id=\"3654760\"><span class=\"fontstyle2\">composer create-project laravel\/laravel your-project-name \u2013prefer-dist<\/span><\/pre><\/li><li><p id=\"r-2478244\" class=\"\" data-claire-element-id=\"3654760\">Explication<\/p><\/li><\/ul><p><span class=\"fontstyle0\">Composer <\/span><span class=\"fontstyle2\">: signifie qu\u2019on utiliser le Composer<br \/><\/span><span class=\"fontstyle0\">create-project <\/span><span class=\"fontstyle2\">: signifie qu\u2019on cr\u00e9e un projet <\/span><span class=\"fontstyle0\">laravel\/laravel <\/span><span class=\"fontstyle2\">: va chercher les fichiers \u00e0 installer pour le Framework Laravel<br \/><\/span><span class=\"fontstyle0\">your-project-name <\/span><span class=\"fontstyle2\">: on met le nom qu\u2019on veut donner \u00e0 notre projet<br \/><\/span><span class=\"fontstyle0\">&#8211;prefer-dist <\/span><span class=\"fontstyle2\">: il y a plusieurs sous branches de Laravel, et cette commande-l\u00e0 va chercher la version compl\u00e8te de Laravel.<\/span><\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6034\" class=\"elementor-tab-title\" data-tab=\"4\" role=\"button\" aria-controls=\"elementor-tab-content-6034\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Organisation de Laravel<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6034\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"region\" aria-labelledby=\"elementor-tab-title-6034\"><p>Maintenant qu&#8217;on a un Laravel tout neuf et qui fonctionne voyons un peu ce qu&#8217;il contient.<\/p><div class=\"foldable__content\"><h4 id=\"r-1820345\" class=\"\" data-claire-element-id=\"5219869\">Dossier app<\/h4><p id=\"r-2471290\" class=\"\" data-claire-element-id=\"2977250\">Ce dossier contient les \u00e9l\u00e9ments essentiels de l&#8217;application :<\/p><figure id=\"r-2471295\" class=\"\" data-claire-element-id=\"4774522\"><p id=\"r-2471294\" data-claire-element-id=\"4774521\"><img decoding=\"async\" id=\"r-3218474\" class=\"\" src=\"https:\/\/s3-eu-west-1.amazonaws.com\/sdz-upload\/prod\/upload\/img406.JPG\" alt=\"\" width=\"182\" height=\"540\" data-claire-element-id=\"4774520\" \/>\u00a0<\/p><figcaption>Dossier App<\/figcaption><\/figure><ul id=\"r-2471321\" class=\"\" data-claire-element-id=\"5219868\"><li id=\"r-3011126\" data-claire-element-id=\"5219861\"><p id=\"r-3011125\" data-claire-element-id=\"5219860\"><strong>Console\/Commands<\/strong>\u00a0: ici on mettra toutes les commandes en mode console, il y a au d\u00e9part une commande\u00a0<code data-claire-semantic=\"text\">Inspire<\/code>\u00a0qui sert d&#8217;exemple,<\/p><\/li><li id=\"r-2689391\" data-claire-element-id=\"5219863\"><p id=\"r-2689390\" data-claire-element-id=\"5219862\"><strong>Jobs\u00a0:\u00a0<\/strong>ici on mettra les commandes concernant les t\u00e2ches que doit effectuer l&#8217;application. C&#8217;est une nouveaut\u00e9 de la version 5 que je n&#8217;aborderai pas dans ce cours,<\/p><\/li><li id=\"r-2471316\" data-claire-element-id=\"4236590\"><p id=\"r-2471315\" data-claire-element-id=\"4236589\"><strong>Events\u00a0<\/strong>et<strong>\u00a0Listeners :\u00a0<\/strong>ici on va avoir les \u00e9v\u00e9nements n\u00e9cessaires pour l&#8217;application,<\/p><\/li><li id=\"r-2471318\" data-claire-element-id=\"5219865\"><p id=\"r-2471317\" data-claire-element-id=\"5219864\"><strong>Http<\/strong>\u00a0: ici on va trouver tout ce qui concerne la communication : contr\u00f4leurs, routes, middlewares (il y a 4 middlewares de base) et requ\u00eates,<\/p><\/li><li id=\"r-2471320\" data-claire-element-id=\"5219867\"><p id=\"r-2471319\" data-claire-element-id=\"5219866\"><strong>Providers<\/strong>\u00a0: ici on va mettre tous les providers, il y en a d\u00e9j\u00e0 4 au d\u00e9part. Les providers servent \u00e0 initialiser les composants.<\/p><\/li><li id=\"r-3218476\" data-claire-element-id=\"4774524\"><p id=\"r-3218475\" data-claire-element-id=\"4774523\"><strong>Policies<\/strong>\u00a0: une \u00e9volution r\u00e9cente qui permet de g\u00e9rer facilement les droits d&#8217;acc\u00e8s.<\/p><\/li><\/ul><p id=\"r-2471404\" class=\"\" data-claire-element-id=\"2977480\">On trouve \u00e9galement le fichier User.php qui est un mod\u00e8le qui concerne les utilisateurs pour la base de donn\u00e9es.<\/p><p id=\"r-1820419\" class=\"\" data-claire-element-id=\"4774526\">\u00c9videmment tout cela doit vous para\u00eetre assez n\u00e9buleux pour le moment mais nous verrons en d\u00e9tail la plupart de\u00a0ces sections au fil du cours.<\/p><h4 id=\"r-1820429\" class=\"\" data-claire-element-id=\"5276791\">Autres dossiers<\/h4><figure id=\"r-2471361\" class=\"\" data-claire-element-id=\"5276790\"><img decoding=\"async\" id=\"r-2471349\" src=\"https:\/\/sdz-upload.s3.amazonaws.com\/prod\/upload\/img792.JPG\" alt=\"Autres dossiers\" data-claire-element-id=\"2977340\" \/><figcaption>Autres dossiers<\/figcaption><\/figure><p id=\"r-1820434\" class=\"\" data-claire-element-id=\"1920924\">Voici une description du contenu des autres dossiers :<\/p><ul id=\"r-1820441\" class=\"\" data-claire-element-id=\"5219874\"><li id=\"r-1820436\" data-claire-element-id=\"2977364\"><p id=\"r-1820435\" data-claire-element-id=\"2977363\"><strong>bootstrap<\/strong>\u00a0: scripts d&#8217;initialisation de Laravel pour le chargement automatique des classes, la fixation de l&#8217;environnement et des chemins, et pour le d\u00e9marrage de l&#8217;application,<\/p><\/li><li id=\"r-1820438\" data-claire-element-id=\"2998066\"><p id=\"r-1820437\" data-claire-element-id=\"2998065\"><strong>public<\/strong>\u00a0: tout ce qui doit appara\u00eetre dans le dossier public du site : images, CSS, scripts&#8230;<\/p><\/li><li id=\"r-1820440\" data-claire-element-id=\"2977368\"><p id=\"r-1820439\" data-claire-element-id=\"2977367\"><strong>vendor<\/strong>\u00a0: tous les composants de Laravel et de ses d\u00e9pendances,<\/p><\/li><li id=\"r-2471363\" data-claire-element-id=\"2977370\"><p id=\"r-2471362\" data-claire-element-id=\"2977369\"><strong>config<\/strong>\u00a0: toutes les configurations : application, authentification, cache, base de donn\u00e9es, espaces de noms, emails, syst\u00e8mes de fichier, session&#8230;<\/p><\/li><li id=\"r-2471365\" data-claire-element-id=\"3654779\"><p id=\"r-2471364\" data-claire-element-id=\"3654778\"><strong>database<\/strong>\u00a0: ici on aura les migrations et les populations,<\/p><\/li><li id=\"r-2471372\" data-claire-element-id=\"4263325\"><p id=\"r-2471371\" data-claire-element-id=\"4263324\"><strong>resources<\/strong>\u00a0: ici on aura les vues, les fichiers de langage et les assets (par exemple les fichiers LESS ou Sass),<\/p><\/li><li id=\"r-2471374\" data-claire-element-id=\"5219873\"><p id=\"r-2471373\" data-claire-element-id=\"5219872\"><strong>storage<\/strong>\u00a0: pour stocker les donn\u00e9es temporaires de l&#8217;application : vues compil\u00e9es, caches, cl\u00e9s de session&#8230;<\/p><\/li><li id=\"r-2471381\" data-claire-element-id=\"2998070\"><p id=\"r-2471375\" data-claire-element-id=\"2998069\"><strong>tests<\/strong>\u00a0: pour les fichiers de tests unitaires.<\/p><\/li><\/ul><h4 id=\"r-1820443\" class=\"\" data-claire-element-id=\"4236636\">Fichiers de la racine<\/h4><p id=\"r-1820442\" class=\"\" data-claire-element-id=\"1921036\">Il y a un certain nombre de fichiers dans la racine dont voici les principaux :<\/p><ul id=\"r-1820459\" class=\"hoveredCourseElement\" data-claire-element-id=\"4236635\"><li id=\"r-1820452\" data-claire-element-id=\"3468444\"><p id=\"r-1820451\" data-claire-element-id=\"3468443\"><strong>artisan<\/strong>\u00a0: outil en ligne de Laravel pour des t\u00e2ches de gestion,<\/p><\/li><li id=\"r-1820454\" data-claire-element-id=\"3468446\"><p id=\"r-1820453\" data-claire-element-id=\"3468445\"><strong>composer.json<\/strong>\u00a0: fichier de r\u00e9f\u00e9rence de Composer,<\/p><\/li><li id=\"r-1820456\" data-claire-element-id=\"3468448\"><p id=\"r-1820455\" data-claire-element-id=\"3468447\"><strong>phpunit.xml<\/strong>\u00a0: fichier de configuration de phpunit (pour les tests unitaires),<\/p><\/li><li id=\"r-2585351\" data-claire-element-id=\"4236634\"><p id=\"r-2585350\" data-claire-element-id=\"4236633\"><strong>.env<\/strong>\u00a0: fichier pour sp\u00e9cifier\u00a0l&#8217;environnement d&#8217;ex\u00e9cution.<\/p><\/li><\/ul><\/div><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6035\" class=\"elementor-tab-title\" data-tab=\"5\" role=\"button\" aria-controls=\"elementor-tab-content-6035\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Routages <\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6035\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"5\" role=\"region\" aria-labelledby=\"elementor-tab-title-6035\"><p><span class=\"fontstyle0\">Dans ce chapitre nous allons nous int\u00e9resser au devenir d&#8217;une requ\u00eate<br \/>HTTP qui arrive dans notre application Laravel. Nous allons voir l&#8217;int\u00e9r\u00eat<br \/>d&#8217;utiliser un fichier htaccess pour simplifier les urls. Nous verrons aussi le<br \/>syst\u00e8me de routage pour trier les requ\u00eates.<br \/><\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><b>Les requ\u00eates HTTP<\/b><\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\"> <span class=\"fontstyle0\">Le HTTP (Hypertext Transfer Protocol) est un protocole de communication entre un client et un serveur. Le client demande une page au serveur en<br \/>envoyant une requ\u00eate et le serveur r\u00e9pond en envoyant une r\u00e9ponse, en<br \/>g\u00e9n\u00e9ral une page HTML. La requ\u00eate du client comporte un certain nombre d&#8217;informations mais<br \/>nous allons nous int\u00e9resser pour le moment seulement \u00e0 deux d&#8217;entre<br \/>elles :<br \/><\/span><span class=\"fontstyle2\">\uf0b7 <\/span><span class=\"fontstyle0\">la m\u00e9thode : get, post, put, delete&#8230;<br \/><\/span><span class=\"fontstyle2\">\uf0b7 <\/span><span class=\"fontstyle0\">l&#8217;url : c&#8217;est l&#8217;adresse de la page demand\u00e9e sur le serveur<br \/>Notre application Laravel doit savoir interpr\u00e9ter ces informations et les<br \/>utiliser de fa\u00e7on pertinente pour renvoyer ce que demande le client. Nous<br \/>allons voir comment cela est r\u00e9alis\u00e9.<\/span>\u00a0<\/span><\/p><p><span class=\"fontstyle0\">Les fichier des routes<br \/>C&#8217;est avec ce fichier que la requ\u00eate va \u00eatre analys\u00e9e et dirig\u00e9e. Regardons<br \/>ce qu&#8217;on y trouve au d\u00e9part :<\/span><\/p><pre><span class=\"fontstyle2\">&lt;?php<br \/>\u00a0 \u00a0Route<\/span><span class=\"fontstyle2\">::get<\/span><span class=\"fontstyle2\">(<\/span><span class=\"fontstyle2\">'\/'<\/span><span class=\"fontstyle2\">, function <\/span><span class=\"fontstyle2\">() {<br \/><\/span><span class=\"fontstyle2\">\u00a0 \u00a0return <\/span><span class=\"fontstyle2\">view(<\/span><span class=\"fontstyle2\">'welcome'<\/span><span class=\"fontstyle2\">);\u00a0<br \/>});<\/span><\/pre><p><span class=\"fontstyle2\"><br \/><\/span><span class=\"fontstyle0\">Comme Laravel est explicite vous pouvez d\u00e9j\u00e0 deviner \u00e0 quoi sert ce code :<br \/><\/span><span class=\"fontstyle3\">\uf0b7 <\/span><span class=\"fontstyle0\">Route : on utilise le routeur,<\/span><br \/><span class=\"fontstyle3\">\uf0b7 <\/span><span class=\"fontstyle0\">get : on regarde si la requ\u00eate a la m\u00e9thode &#8220;get&#8221;,<br \/><\/span><span class=\"fontstyle3\">\uf0b7 <\/span><span class=\"fontstyle0\">&#8216;\/&#8217; : on regarde si l&#8217;url comporte uniquement le nom de domaine,<br \/><\/span><span class=\"fontstyle3\">\uf0b7 <\/span><span class=\"fontstyle0\">dans la fonction anonyme on retourne (<\/span><span class=\"fontstyle4\">return<\/span><span class=\"fontstyle0\">) une vue (<\/span><span class=\"fontstyle4\">view <\/span><span class=\"fontstyle0\">) \u00e0 partir<br \/>du fichier &#8220;welcome&#8221;.<\/span><\/p><p><span class=\"fontstyle0\">Plusieurs routes et param\u00e8tre de route<br \/><\/span><span class=\"fontstyle0\">A l&#8217;installation Laravel a une seule route qui correspond \u00e0 l&#8217;url de base<br \/>compos\u00e9e uniquement du nom de domaine. Voyons maintenant<br \/>comment cr\u00e9er d&#8217;autres routes. Imaginons que nous avons 3 pages qui<br \/>doivent \u00eatre affich\u00e9es avec ces urls :<br \/>1. http:\/\/monsite.fr\/1<br \/>2. http:\/\/monsite.fr\/2<br \/>3. http:\/\/monsite.fr\/3<br \/>J&#8217;ai fait appara\u00eetre en gras la partie sp\u00e9cifique de l&#8217;url pour chaque page. Il<br \/>est facile de r\u00e9aliser cela avec ce code :<\/span><\/p><pre><span class=\"fontstyle2\">&lt;?php<br \/>\u00a0 \u00a0 \u00a0 get(<\/span><span class=\"fontstyle2\">'1'<\/span><span class=\"fontstyle2\">, <\/span><span class=\"fontstyle2\">function<\/span><span class=\"fontstyle2\">() { <\/span><span class=\"fontstyle2\">return <\/span><span class=\"fontstyle2\">'Je suis la page 1 !'<\/span><span class=\"fontstyle2\">; });<br \/>\u00a0 \u00a0 \u00a0get(<\/span><span class=\"fontstyle2\">'2'<\/span><span class=\"fontstyle2\">, <\/span><span class=\"fontstyle2\">function<\/span><span class=\"fontstyle2\">() { <\/span><span class=\"fontstyle2\">return <\/span><span class=\"fontstyle2\">'Je suis la page 2 !'<\/span><span class=\"fontstyle2\">; });<br \/>\u00a0 \u00a0 \u00a0 get(<\/span><span class=\"fontstyle2\">'3'<\/span><span class=\"fontstyle2\">, <\/span><span class=\"fontstyle2\">function<\/span><span class=\"fontstyle2\">() { <\/span><span class=\"fontstyle2\">return <\/span><span class=\"fontstyle2\">'Je suis la page 3 !'<\/span><span class=\"fontstyle2\">; });<br \/><\/span>?&gt;<\/pre><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6036\" class=\"elementor-tab-title\" data-tab=\"6\" role=\"button\" aria-controls=\"elementor-tab-content-6036\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Cr\u00e9ation des routes avec m\u00e9thode HTTP<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6036\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"6\" role=\"region\" aria-labelledby=\"elementor-tab-title-6036\"><p><span class=\"fontstyle0\">La classe Routepeut g\u00e9rer tous les types de requ\u00eates HTTP<br \/><\/span><span class=\"fontstyle2\">\u2022Route::get($uri, $callback) : g\u00e8re les requ\u00eates de type GET<br \/>\u2022Route::post($uri, $callback) : g\u00e8re les requ\u00eates de type POST<br \/>\u2022Route::put($uri, $callback) : g\u00e8re les requ\u00eates de type PUT<br \/>\u2022Route::patch($uri, $callback): g\u00e8re les requ\u00eates de type PATCH<br \/>\u2022Route::delete($uri, $callback): g\u00e8re les requ\u00eates de type DELETE<br \/>\u2022Route::options($uri, $callback): g\u00e8re les requ\u00eates de type OPTIONS<br \/>Cr\u00e9ation d\u2019une route param\u00e9tr\u00e9e<br \/>Un param\u00e8tre optionnel peut \u00eatre ajout\u00e9 \u00e0 une route<br \/>\u2022Il peut arriver qu\u2019on ait besoin de sp\u00e9cifier un param\u00e8tre dans une route, mais<br \/>que sa pr\u00e9sence soit optionnel<br \/>\u2022On peut satisfaire ce besoin en ajoutant un point d\u2019interrogation apr\u00e8s le nom<br \/>du param\u00e8tre<br \/>\u2022Il faudra tout de m\u00eame donner une valeur par d\u00e9faut \u00e0 la variable<br \/>correspondante dans la closure<br \/>Exemple: Afficher \u00abBonjour fatou\u00bb \u00e0 l\u2019utilisateur quand il acc\u00e8de \u00e0 l\u2019adresse<br \/>http:\/\/localhost\/saluer\/fatou. L\u2019acc\u00e8s \u00e0 http:\/\/localhost\/salueraffichera \u00abBonjour<br \/>Inconnu\u00bb<\/span><\/p><pre><span class=\"fontstyle2\">Route::get('\/saluer\/{nom?}', function ($nom = 'Inconnu') {<br \/>$reponse= 'Bonjour ' . $nom ;<\/span><br \/><span class=\"fontstyle2\">return $reponse;<br \/>});<\/span> <\/pre><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6037\" class=\"elementor-tab-title\" data-tab=\"7\" role=\"button\" aria-controls=\"elementor-tab-content-6037\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Cr\u00e9ation d\u2019une route de redirection<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6037\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"7\" role=\"region\" aria-labelledby=\"elementor-tab-title-6037\"><p><span class=\"fontstyle2\">Il est possible de rediriger l\u2019utilisateur vers une autre page<br \/>\u2022Exemple: Rediriger l\u2019utilisateur vers http:\/\/localhost\/accueil quand il essaye<br \/>d\u2019acc\u00e9der \u00e0 http:\/\/localhost\/home<\/span><\/p><pre><span class=\"fontstyle2\">Route::redirect('\/home', '\/accueil');<\/span><\/pre><p><span class=\"fontstyle2\">Il est possible de pr\u00e9ciser le code d\u2019\u00e9tat HTTP durant la redirection<br \/>\u2022Par d\u00e9faut, le code d\u2019\u00e9tat vaut 302<br \/>\u2022Pour changer cette valeur en 301 par exemple, il faut faire :<\/span><\/p><pre><span class=\"fontstyle2\">Route::redirect('\/home', '\/accueil', 301);<\/span><\/pre><p><span class=\"fontstyle2\">Il est possible de faire une redirection permanente en faisant :<\/span><\/p><pre><span class=\"fontstyle2\">Route::permanentRedirect('\/home', '\/accueil');<\/span> <\/pre><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6038\" class=\"elementor-tab-title\" data-tab=\"8\" role=\"button\" aria-controls=\"elementor-tab-content-6038\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Cr\u00e9ation d\u2019une route pour une vue<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6038\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"8\" role=\"region\" aria-labelledby=\"elementor-tab-title-6038\"><p><span class=\"fontstyle2\">Il est possible de faire correspondre une URL \u00e0 une vue<br \/>\u2022Si la route a seulement besoin de retourner la vue sans effectuer un quelconque<br \/>traitement, on peut ne pas utiliser de closures<br \/>\u2022Il suffit d\u2019invoquer la m\u00e9thode viewde la classe Route.<br \/>Exemple:Afficher la vue \u00abwelcome\u00bb \u00e0 l\u2019utilisateur quand il acc\u00e8de \u00e0 l\u2019adresse <\/span><span class=\"fontstyle2\">http:\/\/localhost\/<\/span><\/p><pre><span class=\"fontstyle2\">Route::view('\/', 'welcome');<\/span> <\/pre><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-6039\" class=\"elementor-tab-title\" data-tab=\"9\" role=\"button\" aria-controls=\"elementor-tab-content-6039\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Cr\u00e9ation d\u2019une route pour un contr\u00f4leur<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-6039\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"9\" role=\"region\" aria-labelledby=\"elementor-tab-title-6039\"><p><span class=\"fontstyle2\">Il est possible de faire correspondre une URL \u00e0 une m\u00e9thode d\u2019un contr\u00f4leur<br \/>\u2022La notion de contr\u00f4leur sera abord\u00e9e plus tard<br \/>\u2022A ce niveau, notez juste la syntaxe permettant d\u2019associer une URL \u00e0 une action<br \/>particuli\u00e8re d\u2019un contr\u00f4leur<br \/>Exemple:Demander \u00e0 Laravel d\u2019invoquer la m\u00e9thode getListdu contr\u00f4leur<br \/>UserControllerquand l\u2019utilisateur acc\u00e8de \u00e0 l\u2019adresse http:\/\/localhost\/users<\/span><\/p><pre><span class=\"fontstyle2\">Route::get('\/users', 'UserController@getList');<\/span> <\/pre><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-60310\" class=\"elementor-tab-title\" data-tab=\"10\" role=\"button\" aria-controls=\"elementor-tab-content-60310\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Les contr\u00f4leurs<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-60310\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"10\" role=\"region\" aria-labelledby=\"elementor-tab-title-60310\"><p>R\u00f4le<\/p><div class=\"foldable__content\"><p id=\"r-1823591\" class=\"\" data-claire-element-id=\"1926121\">La t\u00e2che d&#8217;un contr\u00f4leur est de r\u00e9ceptionner une requ\u00eate (qui a d\u00e9j\u00e0 \u00e9t\u00e9 tri\u00e9e par une route) et de d\u00e9finir la r\u00e9ponse appropri\u00e9e, rien de moins et rien de plus. Voici une illustration du processus :<\/p><figure id=\"r-1823608\" class=\"\" data-claire-element-id=\"5219992\"><img decoding=\"async\" id=\"r-1823606\" src=\"https:\/\/sdz-upload.s3.amazonaws.com\/prod\/upload\/img22.JPG\" alt=\"Traitement de la requ\u00eate par un contr\u00f4leur\" data-claire-element-id=\"1926122\" \/><figcaption>Traitement de la requ\u00eate par un contr\u00f4leur<\/figcaption><\/figure><\/div><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-60311\" class=\"elementor-tab-title\" data-tab=\"11\" role=\"button\" aria-controls=\"elementor-tab-content-60311\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Utilisation d'un contr\u00f4leur<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-60311\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"11\" role=\"region\" aria-labelledby=\"elementor-tab-title-60311\"><p>Voyons maintenant un exemple pratique de mise en \u0153uvre d&#8217;un contr\u00f4leur. On va conserver notre exemple avec les articles mais maintenant trait\u00e9 avec un contr\u00f4leur. On conserve le m\u00eame template et les m\u00eames vues<\/p><p id=\"r-1824155\" class=\"\" data-claire-element-id=\"5220024\">On va cr\u00e9er un contr\u00f4leur (entra\u00eenez-vous \u00e0 utiliser Artisan) pour les articles :<br \/><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\"><br \/><\/span><\/p><pre id=\"r-1824155\" data-claire-element-id=\"5220024\"><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-weight: var( --e-global-typography-text-font-weight );\">&lt;?php<\/span><br \/><span class=\"ace_keyword\">namespace<\/span> <span class=\"ace_identifier\">App<\/span>\\<span class=\"ace_identifier\">Http<\/span>\\<span class=\"ace_identifier\">Controllers<\/span>;<br \/><span class=\"ace_keyword\">use<\/span> <span class=\"ace_identifier\">Illuminate<\/span>\\<span class=\"ace_identifier\">Http<\/span>\\<span class=\"ace_identifier\">Request<\/span>;<br \/><span class=\"ace_keyword\">use<\/span> <span class=\"ace_identifier\">App<\/span>\\<span class=\"ace_identifier\">Http<\/span>\\<span class=\"ace_identifier\">Requests<\/span>;<br \/><span class=\"ace_keyword\">use<\/span> <span class=\"ace_identifier\">App<\/span>\\<span class=\"ace_identifier\">Http<\/span>\\<span class=\"ace_identifier\">Controllers<\/span>\\<span class=\"ace_identifier\">Controller<\/span>;class <span class=\"ace_identifier\">ArticleController<\/span> <span class=\"ace_keyword\">extends<br \/><\/span>Controller<br \/>{<br \/>public <span class=\"ace_keyword\">function<\/span> <span class=\"ace_identifier\">show<\/span><span class=\"ace_paren ace_lparen\">(<\/span><span class=\"ace_variable\">$n<\/span><span class=\"ace_paren ace_rparen\">)<\/span>{<br \/>return <span class=\"ace_identifier\">view<\/span><span class=\"ace_paren ace_lparen\">(<\/span><span class=\"ace_string\">'article'<\/span><span class=\"ace_paren ace_rparen\">)<\/span><span class=\"ace_keyword ace_operator\">-&gt;<\/span><span class=\"ace_identifier\">with<\/span><span class=\"ace_paren ace_lparen\">(<\/span><span class=\"ace_string\">'numero'<\/span>, <span class=\"ace_variable\">$n<\/span><span class=\"ace_paren ace_rparen\">)<\/span>;<br \/>}<br \/>}<\/pre><pre id=\"r-2472976\" class=\"code-block hoveredCourseElement\" data-claire-element-id=\"5220025\"><code class=\"ace\" data-claire-semantic=\"php\" data-code=\"{&quot;language&quot;:&quot;php&quot;,&quot;source&quot;:&quot;&amp;#x3C;?php\\n\\nnamespace App\\\\Http\\\\Controllers;\\n\\nuse Illuminate\\\\Http\\\\Request;\\n\\nuse App\\\\Http\\\\Requests;\\nuse App\\\\Http\\\\Controllers\\\\Controller;\\n\\nclass ArticleController extends Controller\\n{\\n\\n public function show($n)\\n&amp;#x9;{\\n&amp;#x9;&amp;#x9;return view(&amp;#x27;article&amp;#x27;)-&amp;#x3E;with(&amp;#x27;numero&amp;#x27;, $n);\\n&amp;#x9;}\\n\\n}&quot;}\" data-widget=\"codeBlock\"><\/code><\/pre><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<h4 id=\"elementor-tab-title-60312\" class=\"elementor-tab-title\" data-tab=\"12\" role=\"button\" aria-controls=\"elementor-tab-content-60312\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-toggle-title\" tabindex=\"0\">Les middleware en laravel<\/a>\n\t\t\t\t\t<\/h4>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-60312\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"12\" role=\"region\" aria-labelledby=\"elementor-tab-title-60312\"><p><span>L&#8217;intergiciel peut \u00eatre d\u00e9fini comme un interm\u00e9diaire ou une interface agissant en coordination entre une requ\u00eate et une r\u00e9ponse.\u00a0Comme mentionn\u00e9 dans le sc\u00e9nario de test ci-dessus, si l&#8217;utilisateur n&#8217;est pas authentifi\u00e9, votre projet peut rediriger cet utilisateur de la page login.php vers la page index.php. <\/span><span>Vous pouvez cr\u00e9er votre middleware en ex\u00e9cutant la syntaxe mentionn\u00e9e ci-dessous: <br \/><\/span><span>Syntaxe:<\/span><\/p><pre><span>php artisan make: middleware &lt;middleware_name&gt;<\/span><\/pre><p><span>Ici, vous devez remplacer le &lt;middleware_name&gt; par votre middleware.\u00a0Vous pouvez voir cet emplacement de chemin app \/ Http \/ Middleware le middleware que vous allez cr\u00e9er votre projet.<\/span><\/p><div class=\"example\"><span>Exemple:<\/span><\/div><pre><span>php artisan make: middleware CheckUser<\/span><\/pre><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-3d10fa4\" data-id=\"3d10fa4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3d70c22 elementor-widget elementor-widget-sidebar\" data-id=\"3d70c22\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"sidebar.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"search-2\" class=\"widget widget_search\">\n<form role=\"search\" method=\"get\" class=\"searchform\" action=\"https:\/\/kaay-coder.2sweb.sn\/kc\/\">\n\n\t<label>\n\n\t\t<span class=\"screen-reader-text\">Recherche pour\u00a0:<\/span>\n\t\t<input type=\"search\" id=\"searchform-1\" name=\"s\" value=\"\" placeholder=\"Rechercher &hellip;\" title=\"Appuyez sur Entrer pour rechercher\" \/>\n\n\t\t\n\t\t\t<button value=\"Search\" class=\"wpbff wpbff-search\"><\/button>\n\n\t\t\n\t<\/label>\n\n<\/form>\n<\/div><div id=\"calendar-2\" class=\"widget widget_calendar\"><div id=\"calendar_wrap\" class=\"calendar_wrap\"><table id=\"wp-calendar\" class=\"wp-calendar-table\">\n\t<caption>juin 2026<\/caption>\n\t<thead>\n\t<tr>\n\t\t<th scope=\"col\" aria-label=\"lundi\">L<\/th>\n\t\t<th scope=\"col\" aria-label=\"mardi\">M<\/th>\n\t\t<th scope=\"col\" aria-label=\"mercredi\">M<\/th>\n\t\t<th scope=\"col\" aria-label=\"jeudi\">J<\/th>\n\t\t<th scope=\"col\" aria-label=\"vendredi\">V<\/th>\n\t\t<th scope=\"col\" aria-label=\"samedi\">S<\/th>\n\t\t<th scope=\"col\" aria-label=\"dimanche\">D<\/th>\n\t<\/tr>\n\t<\/thead>\n\t<tbody>\n\t<tr><td>1<\/td><td>2<\/td><td>3<\/td><td>4<\/td><td id=\"today\">5<\/td><td>6<\/td><td>7<\/td>\n\t<\/tr>\n\t<tr>\n\t\t<td>8<\/td><td>9<\/td><td>10<\/td><td>11<\/td><td>12<\/td><td>13<\/td><td>14<\/td>\n\t<\/tr>\n\t<tr>\n\t\t<td>15<\/td><td>16<\/td><td>17<\/td><td>18<\/td><td>19<\/td><td>20<\/td><td>21<\/td>\n\t<\/tr>\n\t<tr>\n\t\t<td>22<\/td><td>23<\/td><td>24<\/td><td>25<\/td><td>26<\/td><td>27<\/td><td>28<\/td>\n\t<\/tr>\n\t<tr>\n\t\t<td>29<\/td><td>30<\/td>\n\t\t<td class=\"pad\" colspan=\"5\">&nbsp;<\/td>\n\t<\/tr>\n\t<\/tbody>\n\t<\/table><nav aria-label=\"Mois pr\u00e9c\u00e9dents et suivants\" class=\"wp-calendar-nav\">\n\t\t<span class=\"wp-calendar-nav-prev\"><a href=\"https:\/\/kaay-coder.2sweb.sn\/kc\/2021\/03\/\">&laquo; Mar<\/a><\/span>\n\t\t<span class=\"pad\">&nbsp;<\/span>\n\t\t<span class=\"wp-calendar-nav-next\">&nbsp;<\/span>\n\t<\/nav><\/div><\/div>\n\t\t<div id=\"recent-posts-2\" class=\"widget widget_recent_entries\">\n\t\t<h4 class=\"wpbf-widgettitle\">Articles r\u00e9cents<\/h4>\n\t\t<ul>\n\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t<a href=\"https:\/\/kaay-coder.2sweb.sn\/kc\/hello-world\/\">Kaay-Coder !<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t<\/ul>\n\n\t\t<\/div><div id=\"archives-2\" class=\"widget widget_archive\"><h4 class=\"wpbf-widgettitle\">Archives<\/h4>\n\t\t\t<ul>\n\t\t\t\t\t<li><a href='https:\/\/kaay-coder.2sweb.sn\/kc\/2021\/03\/'>mars 2021<\/a><\/li>\n\t\t\t<\/ul>\n\n\t\t\t<\/div><div id=\"media_gallery-2\" class=\"widget widget_media_gallery\"><div id='gallery-1' class='gallery galleryid-126 gallery-columns-2 gallery-size-thumbnail'><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/kaay-coder.2sweb.sn\/kc\/accueil\/html\/'><img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/html-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" srcset=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/html-150x150.png 150w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/html-300x300.png 300w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/html.png 421w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a>\n\t\t\t<\/div><\/figure><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/kaay-coder.2sweb.sn\/kc\/dmxbe\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/dMXbE-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/div><\/figure><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/kaay-coder.2sweb.sn\/kc\/angular_hub642029a576c43637a3db16b5fc361ac_2385_700x450_fit_box_2\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/angular_hub642029a576c43637a3db16b5fc361ac_2385_700x450_fit_box_2-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" srcset=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/angular_hub642029a576c43637a3db16b5fc361ac_2385_700x450_fit_box_2-150x150.png 150w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/angular_hub642029a576c43637a3db16b5fc361ac_2385_700x450_fit_box_2.png 250w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a>\n\t\t\t<\/div><\/figure><figure class='gallery-item'>\n\t\t\t<div class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/kaay-coder.2sweb.sn\/kc\/wordpress_logo_8-1-1024x1015\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/Wordpress_logo_8-1-1024x1015-1-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" srcset=\"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/Wordpress_logo_8-1-1024x1015-1-150x150.png 150w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/Wordpress_logo_8-1-1024x1015-1-300x297.png 300w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/Wordpress_logo_8-1-1024x1015-1-768x761.png 768w, https:\/\/kaay-coder.2sweb.sn\/kc\/wp-content\/uploads\/2021\/03\/Wordpress_logo_8-1-1024x1015-1.png 1024w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a>\n\t\t\t<\/div><\/figure>\n\t\t<\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Qu&#8217;est ce que Laravel ? Laravel est un Framework web open-source \u00e9crit en PHP respectant le principe mod\u00e8le-vue-contr\u00f4leur et enti\u00e8rement d\u00e9velopp\u00e9 en programmation orient\u00e9e objet. Laravel est distribu\u00e9 sous licence MIT, avec ses sources h\u00e9berg\u00e9es sur GitHub. &nbsp;De plus, Laravel utilise la toute derni\u00e8re version de PHP 5.3 et a fr\u00e9quemment des patches de disponibles [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":90,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-126","page","type-page","status-publish","hentry","wpbf-post"],"_links":{"self":[{"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/pages\/126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/comments?post=126"}],"version-history":[{"count":38,"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/pages\/126\/revisions"}],"predecessor-version":[{"id":880,"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/pages\/126\/revisions\/880"}],"up":[{"embeddable":true,"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/pages\/90"}],"wp:attachment":[{"href":"https:\/\/kaay-coder.2sweb.sn\/kc\/wp-json\/wp\/v2\/media?parent=126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}