{"id":28177,"date":"2021-05-19T13:13:00","date_gmt":"2021-05-19T10:13:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28177"},"modified":"2021-10-17T04:48:34","modified_gmt":"2021-10-17T01:48:34","slug":"hur-man-skapar-en-blogg-med-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-skapar-en-blogg-med-laravel\/","title":{"rendered":"Hur man skapar en blogg med Laravel"},"content":{"rendered":"<p>Laravel \u00e4r det mest popul\u00e4ra PHP-ramverket. Vi vet alla att m\u00e4nniskor f\u00f6redrar denna ram f\u00f6r att bygga sina webbapplikationer. Och n\u00e4r du bygger en webbplats med Laravel, vill du antagligen skapa en blogg p\u00e5 din webbplats. I allm\u00e4nhet \u00e4r Laravel inte en bloggplattform som WordPress d\u00e4r du f\u00e5r alla backend-grejer redo att hantera dina bloggartiklar. Och att bygga bloggsystemet fr\u00e5n grunden \u00e4r ganska tidskr\u00e4vande arbete. Tack vare <a href=\"https:\/\/cnvs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Canvas<\/a> som g\u00f6r Laravel-utvecklarna l\u00e4ttare genom att bygga en cool publiceringsplattform f\u00f6r Laravel.<\/p>\n<p>Med hj\u00e4lp av Canvas-paketet kan vi enkelt bygga v\u00e5r blogg i Laravel p\u00e5 bara n\u00e5gra minuter. Canvas gjorde redan h\u00e5rt arbete f\u00f6r att hantera bloggens backend-grejer. Allt du beh\u00f6ver g\u00f6ra \u00e4r att bara h\u00e4mta data och visa den p\u00e5 frontend som matchar din design.<\/p>\n<p>Med detta sagt, l\u00e5t oss ta en titt p\u00e5 hur du skapar en blogg med Laravel med Canvas-paketet.<\/p>\n<h3>Komma ig\u00e5ng<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng med Canvas m\u00e5ste du f\u00f6rst uppfylla grundkravet f\u00f6r Canvas som \u00e4r anv\u00e4ndarautentisering. Laravel g\u00f6r implementeringsautentisering riktigt enkel. Om du redan har installerat Laravel-autentisering hoppar du \u00f6ver det h\u00e4r steget. Annars i din terminal k\u00f6r du kommandona nedan en efter en f\u00f6r att st\u00e4lla in Laravel-autentisering.<\/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>Skapa en blogg med Laravel med Canvas Package<\/h3>\n<p>N\u00e4r autentiseringen \u00e4r p\u00e5 plats kan du installera Canvas genom att k\u00f6ra kommandot nedan:<\/p>\n<pre><code>composer require cnvs\/canvas<\/code><\/pre>\n<p>Vid installation av paket m\u00e5ste du publicera tillg\u00e5ngar och prim\u00e4r konfigurationsfil. Publicera det med kommandot:<\/p>\n<pre><code>php artisan canvas:install<\/code><\/pre>\n<p>Detta kommando skulle hitta den prim\u00e4ra konfigurationsfilen p\u00e5 <code>config\/canvas.php<\/code>. Du kan styra olika aspekter med den h\u00e4r konfigurationsfilen. Men du beh\u00f6ver s\u00e4llan r\u00f6ra vid den h\u00e4r filen eftersom alla saker redan \u00e4r definierade p\u00e5 platserna.<\/p>\n<p>Det skapar ocks\u00e5 n\u00e5gra tabeller i din databas. Detta paket l\u00e4gger till ett &#8217;canvas_&#8217; prefix till alla dessa nyskapade tabeller.<\/p>\n<p>N\u00e4r det g\u00e4ller bloggar m\u00e5ste du alltid anv\u00e4nda bilder i inneh\u00e5llet. S\u00e5 skapa en symbolisk l\u00e4nk f\u00f6r att s\u00e4kerst\u00e4lla att fil\u00f6verf\u00f6ringar \u00e4r offentligt tillg\u00e4ngliga fr\u00e5n webben.<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Det betyder att du kommer att se dina uppladdade bilder i <code>public\/storage<\/code>katalogen.<\/p>\n<p>Om du nu k\u00f6r webbadressen <a href=\"http:\/\/localhost:8000\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/ localhost: 8000 \/ canvas<\/a> kommer du att omdirigera till statistiksidan. Du kan omdirigera till inloggningssidan om du inte har loggat in. H\u00e4r anv\u00e4nder jag localhost, du kan justera denna URL.<\/p>\n<p>P\u00e5 statistiksidan f\u00e5r du grundl\u00e4ggande analyser av din blogg som antal visningar, bes\u00f6kare, trenden f\u00f6r varje artikel, etc.<\/p>\n<p>Fr\u00e5n rubriksektionen kan du f\u00e5 menyerna f\u00f6r att skapa inl\u00e4gg, taggar, \u00e4mnen, inst\u00e4llningar etc. Du m\u00e5ste spela med alla dessa menyer. Det \u00e4r enkelt och l\u00e4tt att f\u00f6rst\u00e5.<\/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=\"Hur man skapar en blogg med Laravel\" ><\/a><\/p>\n<p>N\u00e4r du klickar p\u00e5 knappen &quot;Nytt inl\u00e4gg&quot; omdirigeras du till en sida d\u00e4r du kan l\u00e4gga till din artikel. Du kan ocks\u00e5 l\u00e4gga till utvalda bilder, SEO-inst\u00e4llningar, taggar, \u00e4mnen i artikeln. L\u00e4gg m\u00e4rke till de tre punkterna bredvid knappen Publicera. Genom att klicka p\u00e5 dessa punkter f\u00e5r du alla dessa alternativ.<\/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=\"Hur man skapar en blogg med Laravel\" ><\/a><\/p>\n<p>Ovan sk\u00e4rmdump som visar bakgrundsf\u00e4rg n\u00e4r jag s\u00e4tter m\u00f6rkt l\u00e4ge p\u00e5. I ditt fall kan du se den vita bakgrunden. S\u00e5 bli inte f\u00f6rvirrad med det. Anv\u00e4ndaren kan hitta den h\u00e4r m\u00f6rka l\u00e4gesfunktionen p\u00e5 sidan Inst\u00e4llningar.<\/p>\n<p>Canvas har en autosparande funktion s\u00e5 att du inte tappar ditt arbete.<\/p>\n<p>Gr\u00e4nssnittet f\u00f6r detta paket \u00e4r enkelt. Du kan enkelt bekanta dig med det p\u00e5 nolltid. N\u00e4sta sak vi beh\u00f6ver se \u00e4r att visa dina artiklar i fronten.<\/p>\n<h4>Publicera artiklar p\u00e5 webbplatsen<\/h4>\n<p>N\u00e4r du \u00e4r klar med backend m\u00e5ste du visa dina artiklar i fronten. Det kr\u00e4ver att man definierar n\u00e5gra rutter och metoder i kontrollerfilen. Canvas-biblioteket gjorde det h\u00e4r h\u00e5rda arbetet f\u00f6r dig. P\u00e5 GitHub-sidan i detta bibliotek f\u00e5r du koden f\u00f6r det. L\u00e4gg till nedanst\u00e5ende rutter i din <code>routes\/web.php<\/code>fil.<\/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>Skapa en Controller BlogController med kommandot:<\/p>\n<pre><code>php artisan make:controller BlogController<\/code><\/pre>\n<p>Din <code>BlogController.php<\/code>kommer att ha koden nedan.<\/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>Skapa bladfiler<\/h4>\n<p>Som definierat i styrenheten, l\u00e5t oss skapa en bladfil <code>blog\/index.blade.php<\/code>och <code>blog\/show.blade.php<\/code>. I den h\u00e4r guiden ska jag inte utforma en blogglista och en detaljerad sida. Eftersom var och en av er har en separat design. Jag ska bara skriva ut artiklar p\u00e5 bladfilen. Du kan anv\u00e4nda designmatchning p\u00e5 din webbplats.<\/p>\n<p><strong>blogg \/ index.blade.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>blogg \/ 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>Jag f\u00f6resl\u00e5r att man skriver ut <code>$data<\/code>variabel och kontrollerar hela informationen som variabeln inneh\u00e5ller. Du vill antagligen anv\u00e4nda andra detaljer ocks\u00e5 fr\u00e5n denna variabel.<\/p>\n<p>Jag hoppas att du f\u00f6rst\u00e5r hur du skapar en blogg med Laravel med ett Canvas-paket. Du kan l\u00e4ra dig mer om detta paket p\u00e5 <a href=\"https:\/\/github.com\/cnvs\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cnvs \/ canvas<\/a>.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-skapar-honungspott-for-att-bekampa-skrappost-i-laravel\/\" title=\"Hur man skapar honungspott f\u00f6r att bek\u00e4mpa skr\u00e4ppost i Laravel\">Hur man skapar honungspott f\u00f6r att bek\u00e4mpa skr\u00e4ppost i Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/backup-laravel-applikation-pa-dropbox\/\" title=\"Backup Laravel-applikation p\u00e5 Dropbox\">Backup Laravel-applikation p\u00e5 Dropbox<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I din ans\u00f6kan kanske du vill integrera en bloggsida. I den h\u00e4r artikeln visar jag dig hur en taxi skapar en blogg med Laravel. Anv\u00e4ndaren kan anv\u00e4nda duken<\/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":[503],"tags":[850],"class_list":["post-28177","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28177","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=28177"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28177\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/20563"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}