{"id":24455,"date":"2021-05-19T13:15:00","date_gmt":"2021-05-19T10:15:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24455"},"modified":"2021-10-18T02:15:24","modified_gmt":"2021-10-17T23:15:24","slug":"comment-creer-un-blog-avec-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-creer-un-blog-avec-laravel\/","title":{"rendered":"Comment cr\u00e9er un blog avec Laravel"},"content":{"rendered":"<p>Laravel est le framework PHP le plus populaire. Nous savons tous que les gens pr\u00e9f\u00e8rent ce framework pour cr\u00e9er leurs applications Web. Et lors de la cr\u00e9ation d&rsquo;un site Web avec Laravel, vous souhaiterez probablement cr\u00e9er un blog sur votre site Web. En g\u00e9n\u00e9ral, Laravel n&rsquo;est pas une plate-forme de blogs comme WordPress o\u00f9 vous pr\u00e9parez tout le backend pour g\u00e9rer vos articles de blog. Et construire le syst\u00e8me de blog \u00e0 partir de z\u00e9ro est un travail assez long. Merci \u00e0 <a href=\"https:\/\/cnvs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Canvas<\/a> qui facilite la vie des d\u00e9veloppeurs Laravel en cr\u00e9ant une plate-forme de publication sympa pour Laravel.<\/p>\n<p>En utilisant le package Canvas, nous pouvons facilement cr\u00e9er notre blog dans Laravel en quelques minutes seulement. Canvas a d\u00e9j\u00e0 travaill\u00e9 dur pour g\u00e9rer le backend du blog. Il vous suffit d&rsquo;obtenir les donn\u00e9es et de les afficher sur le front-end correspondant \u00e0 votre conception.<\/p>\n<p>Cela dit, voyons comment cr\u00e9er un blog avec Laravel en utilisant le package Canvas.<\/p>\n<h3>Commencer<\/h3>\n<p>Pour commencer avec Canvas, vous devez d&rsquo;abord satisfaire aux exigences de base de Canvas, \u00e0 savoir l&rsquo;authentification de l&rsquo;utilisateur. Laravel rend la mise en \u0153uvre de l&rsquo;authentification tr\u00e8s simple. Si vous avez d\u00e9j\u00e0 install\u00e9 l&rsquo;authentification Laravel, ignorez cette \u00e9tape. Sinon dans votre terminal, ex\u00e9cutez les commandes ci-dessous une par une pour configurer l&rsquo;authentification Laravel.<\/p>\n<pre><code>composer require laravel\/ui --dev\nphp artisan ui vue --auth\nnpm install &amp;&amp; npm run dev\n<\/code><\/pre>\n<h3>Cr\u00e9er un blog avec Laravel en utilisant Canvas Package<\/h3>\n<p>Une fois l&rsquo;authentification \u00e0 l&rsquo;endroit, vous pouvez installer le Canvas en ex\u00e9cutant la commande ci-dessous\u00a0:<\/p>\n<pre><code>composer require cnvs\/canvas<\/code><\/pre>\n<p>Lors de l&rsquo;installation du package, vous devez publier les actifs et le fichier de configuration principal. Publiez-le \u00e0 l&rsquo;aide de la commande\u00a0:<\/p>\n<pre><code>php artisan canvas:install<\/code><\/pre>\n<p>Cette commande localiserait le fichier de configuration principal sur <code>config\/canvas.php<\/code>. Vous pouvez contr\u00f4ler divers aspects \u00e0 l&rsquo;aide de ce fichier de configuration. Mais vous avez rarement besoin de toucher \u00e0 ce fichier car tout est d\u00e9j\u00e0 d\u00e9fini aux endroits.<\/p>\n<p>Il cr\u00e9e \u00e9galement quelques tables dans votre base de donn\u00e9es. Ce paquet ajoute un pr\u00e9fixe &lsquo;canvas_&rsquo; \u00e0 toutes ces tables nouvellement cr\u00e9\u00e9es.<\/p>\n<p>En ce qui concerne les blogs, vous devez toujours utiliser des images dans le contenu. Cr\u00e9ez donc un lien symbolique pour vous assurer que les t\u00e9l\u00e9chargements de fichiers sont accessibles publiquement \u00e0 partir du Web.<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Cela signifie que vous verrez vos images t\u00e9l\u00e9charg\u00e9es dans le <code>public\/storage<\/code>r\u00e9pertoire.<\/p>\n<p>Maintenant, si vous ex\u00e9cutez l&rsquo;URL <a href=\"http:\/\/localhost:8000\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/localhost:8000\/canvas,<\/a> vous serez redirig\u00e9 vers la page des statistiques. Vous pouvez rediriger vers la page de connexion si vous ne vous \u00eates pas connect\u00e9. Ici, j&rsquo;utilise le localhost, vous pouvez ajuster cette URL.<\/p>\n<p>Sur la page des statistiques, vous obtiendrez des analyses de base de votre blog comme le nombre de vues, de visiteurs, la tendance de chaque article, etc.<\/p>\n<p>Depuis la section d&rsquo;en-t\u00eate, vous pouvez obtenir les menus pour cr\u00e9er des articles, des balises, des sujets, des param\u00e8tres, etc. Vous devez jouer avec tous ces menus. C&rsquo;est simple et facile \u00e0 comprendre.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20562-6082053455c32.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20562-6082053455c32.png\" alt=\"Comment cr\u00e9er un blog avec Laravel\" ><\/a><\/p>\n<p>En cliquant sur le bouton &lsquo;New Post&rsquo;, vous serez redirig\u00e9 vers une page o\u00f9 vous pourrez ajouter votre article. Vous pouvez \u00e9galement ajouter des images en vedette, des param\u00e8tres de r\u00e9f\u00e9rencement, des balises, des sujets \u00e0 l&rsquo;article. Remarquez les trois points \u00e0 c\u00f4t\u00e9 du bouton Publier. En cliquant sur ces points, vous obtenez toutes ces options.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20562-608205351f558.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20562-608205351f558.png\" alt=\"Comment cr\u00e9er un blog avec Laravel\" ><\/a><\/p>\n<p>Capture d&rsquo;\u00e9cran ci-dessus montrant la couleur d&rsquo;arri\u00e8re-plan lorsque j&rsquo;active le mode sombre. Dans votre cas, vous pouvez voir le fond blanc. Alors ne vous y trompez pas. L&rsquo;utilisateur peut trouver cette fonctionnalit\u00e9 de mode sombre sur la page Param\u00e8tres.<\/p>\n<p>Canvas a une fonction d&rsquo;enregistrement automatique afin que vous ne perdiez pas votre travail.<\/p>\n<p>L&rsquo;interface de ce package est simple. Vous pouvez facilement vous y familiariser en un rien de temps. La prochaine chose que nous devons voir est d&rsquo;afficher vos articles sur le front-end.<\/p>\n<h4>Publication d&rsquo;articles sur le site Web<\/h4>\n<p>Une fois que vous avez termin\u00e9 avec le backend, vous devez afficher vos articles sur le front-end. Cela n\u00e9cessite de d\u00e9finir quelques routes et m\u00e9thodes dans le fichier du contr\u00f4leur. La biblioth\u00e8que Canvas a fait ce travail difficile pour vous. Sur la page GitHub de cette biblioth\u00e8que, vous obtiendrez le code correspondant. Ajoutez les itin\u00e9raires ci-dessous dans votre <code>routes\/web.php<\/code>fichier.<\/p>\n<pre><code>\/\/ Get all published posts\nRoute::get('blog', 'BlogController@getPosts');\n\u00a0\n\/\/ Get posts for a given tag\nRoute::get('tag\/{slug}', 'BlogController@getPostsByTag');\n\u00a0\n\/\/ Get posts for a given topic\nRoute::get('topic\/{slug}', 'BlogController@getPostsByTopic');\n\u00a0\n\/\/ Find a single post\nRoute::middleware('CanvasHttpMiddlewareSession')-&gt;get('{slug}', 'BlogController@findPostBySlug');<\/code><\/pre>\n<p>Cr\u00e9ez un contr\u00f4leur BlogController \u00e0 l&rsquo;aide de la commande\u00a0:<\/p>\n<pre><code>php artisan make:controller BlogController<\/code><\/pre>\n<p>Vous <code>BlogController.php<\/code>aurez le code ci-dessous.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\n\u00a0\nclass BlogController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function getPosts()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'posts' =&gt; CanvasPost::published()-&gt;orderByDesc('published_at')-&gt;simplePaginate(10),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('blog.index', compact('data'));\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function getPostsByTag(string $slug)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (CanvasTag::where('slug', $slug)-&gt;first()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'posts' =&gt; CanvasPost::whereHas('tags', function ($query) use ($slug) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$query-&gt;where('slug', $slug);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})-&gt;published()-&gt;orderByDesc('published_at')-&gt;simplePaginate(10),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('blog.index', compact('data'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0abort(404);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function getPostsByTopic(string $slug)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (CanvasTopic::where('slug', $slug)-&gt;first()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'posts' =&gt; CanvasPost::whereHas('topic', function ($query) use ($slug) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$query-&gt;where('slug', $slug);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})-&gt;published()-&gt;orderByDesc('published_at')-&gt;simplePaginate(10),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('blog.index', compact('data'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0abort(404);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function findPostBySlug(string $slug)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$posts = CanvasPost::with('tags', 'topic')-&gt;published()-&gt;get();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$post = $posts-&gt;firstWhere('slug', $slug);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (optional($post)-&gt;published) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'author' =&gt; $post-&gt;user,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'post'\u00a0\u00a0 =&gt; $post,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'meta'\u00a0\u00a0 =&gt; $post-&gt;meta,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ IMPORTANT: This event must be called for tracking visitor\/view traffic\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0event(new CanvasEventsPostViewed($post));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('blog.show', compact('data'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0abort(404);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<h4>Cr\u00e9er des fichiers lame<\/h4>\n<p>Comme d\u00e9fini dans le contr\u00f4leur, cr\u00e9ons un fichier blade <code>blog\/index.blade.php<\/code>et <code>blog\/show.blade.php<\/code>. Dans ce tutoriel, je ne vais pas concevoir une liste de blogs et une page de d\u00e9tail. Comme chacun de vous a un design distinct. Je vais juste imprimer des articles sur le fichier blade. Vous pouvez appliquer une correspondance de conception avec votre site Web.<\/p>\n<p><strong>blog\/index.lame.php<\/strong><\/p>\n<pre><code>&lt;ul&gt;\n\u00a0\u00a0\u00a0\u00a0@foreach($data['posts'] as $d)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;li&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h2&gt;&lt;a href=\"{{url($d['slug'])}}\"&gt;{{ $d['title'] }}&lt;\/a&gt;&lt;\/h2&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;{!! $d['body'] !!}&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/li&gt;\n\u00a0\u00a0\u00a0\u00a0@endforeach\n&lt;\/ul&gt;<\/code><\/pre>\n<p><strong>blog\/show.blade.php<\/strong><\/p>\n<pre><code>@if($data['post']['featured_image'])\n\u00a0\u00a0\u00a0\u00a0&lt;img src=\"{{ url($data['post']['featured_image']) }}\" alt=\"{{ $data['post']['featured_image_caption'] }}\" \/&gt;\n@endif\n&lt;h2&gt;{{ $data['post']['title'] }}&lt;\/h2&gt;\n{!! $data['post']['body'] !!}<\/code><\/pre>\n<p>Je sugg\u00e9rerais d&rsquo;imprimer la <code>$data<\/code>variable et de v\u00e9rifier toutes les informations que cette variable contient. Vous voudrez probablement aussi utiliser d&rsquo;autres d\u00e9tails de cette variable.<\/p>\n<p>J&rsquo;esp\u00e8re que vous comprenez comment cr\u00e9er un blog avec Laravel en utilisant un package Canvas. Vous pouvez en apprendre plus sur ce package sur <a href=\"https:\/\/github.com\/cnvs\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cnvs\/canvas<\/a>.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-creer-un-pot-de-miel-pour-lutter-contre-le-spam-de-formulaire-dans-laravel\/\" title=\"Comment cr\u00e9er un pot de miel pour lutter contre le spam de formulaire dans Laravel\">Comment cr\u00e9er un pot de miel pour lutter contre le spam de formulaire dans Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/sauvegarder-l-application-laravel-sur-dropbox\/\" title=\"Sauvegarder l&#039;application Laravel sur Dropbox\">Sauvegarder l&rsquo;application Laravel sur Dropbox<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sur votre application, vous souhaiterez peut-\u00eatre int\u00e9grer une page de blog. Dans cet article, je vous montre comment un taxi cr\u00e9e un blog avec Laravel. L&rsquo;utilisateur peut utiliser le canevas<\/p>\n","protected":false},"author":1,"featured_media":20563,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[497],"tags":[844],"class_list":["post-24455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=24455"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24455\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/20563"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=24455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}