{"id":54714,"date":"2023-08-04T09:25:47","date_gmt":"2023-08-04T07:25:47","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=54714&#038;preview=true&#038;preview_id=54714"},"modified":"2023-08-09T10:04:12","modified_gmt":"2023-08-09T08:04:12","slug":"laravel-blog","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/","title":{"rendered":"Zo maak je een blog in Laravel"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-laravel\/\">Laravel<\/a> is een PHP webapplicatie framework met een expressieve, elegante syntaxis. Het framework bevat een uitgebreide bibliotheek met pakketten en neemt veel van het programmeerwerk voor zijn rekening, waardoor jij je kunt richten op je creativiteit.<\/p>\n<p>Een creative use case van Laravel is het maken van een persoonlijke blog. Deze tutorial beschrijft hoe je Laravel kunt gebruiken om een blog te bouwen en te publiceren op Kinsta.<\/p>\n<p>Bekijk de <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-blog\" target=\"_blank\" rel=\"noopener noreferrer\">volledige code van het project<\/a> voor een preview van het project.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Vereisten<\/h2>\n<p>Om deze tutorial te volgen, moet je ervoor zorgen dat je het volgende hebt:<\/p>\n<ul>\n<li>Een webserver. Deze tutorial gebruikt <a href=\"https:\/\/www.apachefriends.org\/download.htmlss.html\" target=\"_blank\" rel=\"noopener noreferrer\">XAMPP<\/a>.<\/li>\n<li>Een account op GitHub, GitLab of Bitbucket voor het publiceren van de code van je applicatie.<\/li>\n<li><a href=\"https:\/\/laravel.com\/docs\/7.x\/installation\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel ge\u00efnstalleerd<\/a>.<\/li>\n<li>Een actief MyKinst a ccount voor Applicatie Hosting. <a href=\"https:\/\/kinsta.com\/nl\/registreren\/?product_type=app-db\">Meld je aan voor een gratis trial<\/a> als je die nog niet hebt.<\/li>\n<\/ul>\n<p>Zorg ervoor dat de <strong>Apache <\/strong>en <strong>MySQL <\/strong>module services draaien in het XAMPP Control Panel. Zo niet, klik dan op de <strong>Start knop <\/strong>van elke service in de kolom<strong> Actions<\/strong>. Je XAMPP Control Panel zou er nu zo uit moeten zien:<\/p>\n<figure style=\"width: 1089px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/xampp-control-panel-apache-mysql.png\" alt=\"XAMPP Configuratiescherm laat meerdere modules zien\" width=\"1089\" height=\"448\"><figcaption class=\"wp-caption-text\">XAMPP Configuratiescherm<\/figcaption><\/figure>\n<p>MySQL\/MariaDB draait standaard op poort 3306. Noteer de poort als je deze wijzigt.<\/p>\n<p>Als je een andere webserver dan XAMPP gebruikt, zorg er dan voor dat je <a href=\"https:\/\/httpd.apache.org\/download.cgi\" target=\"_blank\" rel=\"noopener noreferrer\">Apache<\/a> of andere serversoftware gebruikt en <a href=\"https:\/\/mariadb.org\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">MariaDB server<\/a> op je lokale machine hebt ge\u00efnstalleerd.<\/p>\n<h3>Snel aan de slag met phpMyAdmin<\/h3>\n<ol start=\"1\">\n<li>Als MySQL en Apache draaien, ga dan naar je browser.<\/li>\n<li>Open phpMyAdmin en plak in <code>http:\/\/localhost\/phpmyadmin\/<\/code>. Het volgende zou moeten verschijnen:<\/li>\n<\/ol>\n<figure style=\"width: 1359px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/phpmyadmin-apache-mysql.png\" alt=\"phpMyAdmin geopend in de browser.\" width=\"1359\" height=\"397\"><figcaption class=\"wp-caption-text\">phpMyAdmin geopend in de browser.<\/figcaption><\/figure>\n<p>phpMyAdmin is een databasebeheerprogramma voor MySQL en MariaDB.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Je kunt elk databasebeheersysteem gebruiken, maar deze tutorial gebruikt MariaDB, dat een vergelijkbare verbinding heeft met Laravel als MySQL. De Laravel configuratie is hetzelfde in beide databases.<\/p>\n<\/aside>\n\n<h2>Een nieuw Laravel project maken<\/h2>\n<p>Je kunt nu beginnen met het maken van een blog met Laravel. Voor deze tutorial hebben we een computer met Windows gebruikt.<\/p>\n<ol start=\"1\">\n<li>Ga naar de terminal of command line interface (CLI) van je computer.<\/li>\n<li>Maak een Laravel project genaamd <strong>blog<\/strong> met het commando <code>laravel new blog<\/code>.<\/li>\n<li>Open de <strong>blog<\/strong> directory van je project met het commando <code>cd blog<\/code>.<\/li>\n<li>Open de map vervolgens in je code editor.<\/li>\n<li>Om te controleren of je het project met succes hebt gebouwd, voer je <code>php artisan serve<\/code> uit in je terminal of CMD.<\/li>\n<li>Klik op de lokale adresuitvoer om deze naar de browser te sturen. De browser zou de standaard welkomstpagina van Laravel moeten weergeven, zoals hieronder getoond:<\/li>\n<\/ol>\n<figure style=\"width: 1279px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-welcome.png\" alt=\"Laravel welkomstpagina in de browser\" width=\"1279\" height=\"801\"><figcaption class=\"wp-caption-text\">Laravel welkomstpagina<\/figcaption><\/figure>\n<h3>De database configureren<\/h3>\n<p>Maak en configureer de database door terug te gaan naar <strong>phpMyAdmin<\/strong> in je browser en een database genaamd <strong>blog<\/strong> aan te maken.<\/p>\n<ol start=\"1\">\n<li>Om de database aan te maken typ je in het tabblad <strong>Databases<\/strong> &#8220;blog&#8221; in het veld <strong>Create database<\/strong>.<\/li>\n<li>Klik vervolgens op <strong>Create<\/strong>.<\/li>\n<\/ol>\n<figure style=\"width: 1042px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/phpmyadmin-create-database.png\" alt=\"Database aanmaken in het phpMyAdmin paneel\" width=\"1042\" height=\"312\"><figcaption class=\"wp-caption-text\">Database aanmaken in het phpMyAdmin paneel<\/figcaption><\/figure>\n<ol start=\"3\">\n<li>Werk vervolgens de databaseverbinding bij in je <strong>.env<\/strong> bestand in de root van je blogproject. Wijzig de waarden <code>DB_DATABASE<\/code> en <code>DB_PASSWORD<\/code> in de waarden die je hebt aangemaakt.<\/li>\n<\/ol>\n<p>De verbindingsgegevens moeten er als volgt uitzien:<\/p>\n<pre><code class=\"language-markdown\">DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=blog\nDB_USERNAME=your-db-username\nDB_PASSWORD=your-db-password<\/code><\/pre>\n<p>De andere database verbindingsdetails blijven hetzelfde als in het <strong>.env<\/strong> bestand. Als je tijdens de configuratie een verbindingswaarde wijzigt, zoals <code>DB_PORT<\/code> van 3306 naar 3307, zorg er dan voor dat je deze in het . <strong>env<\/strong> bestand bijwerkt.<\/p>\n<h3>De tabel met berichten maken<\/h3>\n<p>Maak vervolgens een databasemodel en migreer de wijzigingen.<\/p>\n<ol start=\"1\">\n<li>Voer in je terminal <code>php artisan make:model Post -mc<\/code> uit om een model genaamd <strong>Post<\/strong>, een tabel genaamd <strong>posts<\/strong>, een migratiebestand en een controller te maken.<\/li>\n<\/ol>\n<figure style=\"width: 1154px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/terminal-php-artisan-make-model.png\" alt=\"Een model, een migratiebestand en een controller maken via de opdrachtregel.\" width=\"1154\" height=\"140\"><figcaption class=\"wp-caption-text\">Een model, een migratiebestand en een controller maken via de opdrachtregel.<\/figcaption><\/figure>\n<ol start=\"2\">\n<li>Controleer de <strong>database\/migrations<\/strong> map en open het migratiebestand dat je zojuist hebt gemaakt. Het heeft het volgende format: <code>YYYY_MM_DD_ID_create_posts_table.php<\/code>.<\/li>\n<li>Maak in de methode <code>up()<\/code> van het migratiebestand een schema met de attributen <code>title<\/code>, <code>description<\/code> en <code>image<\/code>.<\/li>\n<\/ol>\n<pre><code class=\"language-php\">public function up() {\n  Schema::create('posts', function (Blueprint $table) {\n    $table-&gt;id();\n    $table-&gt;string('title')-&gt;nullable();\n    $table-&gt;text('description')-&gt;nullable();\n    $table-&gt;string('image')-&gt;nullable();\n    $table-&gt;timestamps();\n  });\n}<\/code><\/pre>\n<ol start=\"4\">\n<li>Ga nu naar je terminal en migreer de wijzigingen met <code>php artisan migrate<\/code>, zoals hieronder getoond:<\/li>\n<\/ol>\n<figure style=\"width: 1200px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/terminal-php-artisan-migrate.png\" alt=\"Laravel database migratie\" width=\"1200\" height=\"224\"><figcaption class=\"wp-caption-text\">Laravel database migratie<\/figcaption><\/figure>\n<ol start=\"5\">\n<li>Ga naar <strong>phpMyAdmin<\/strong> in je browser, waar je de tabel met <strong>posts <\/strong>ziet:<\/li>\n<\/ol>\n<figure style=\"width: 990px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/phpmyadmin-posts-table.png\" alt=\"De gemigreerde posts tabel wordt weergegeven in phpMyAdmin\" width=\"990\" height=\"315\"><figcaption class=\"wp-caption-text\">De gemigreerde posts tabel wordt weergegeven in phpMyAdmin<\/figcaption><\/figure>\n<h3>Controllers maken<\/h3>\n<p>Het toevoegen van views en controllers implementeert je business logica voor de database set. De views zijn de gebruikersinterfaces die gegevensobjecten uit het model weergeven. Controllers beheren de stroom van gegevensuitvoering tussen het model en de views.<\/p>\n<ol start=\"1\">\n<li>Voordat je Blade-bestanden aanmaakt, voer je <code>npm install<\/code> uit, gevolgd door <code>npm run dev<\/code> in je terminal. Het eerste commando installeert de benodigde npm pakketten. Het tweede commando start een Vite ontwikkelingsserver.<\/li>\n<li>Ga naar de <strong>app\/Http\/Controllers<\/strong> map, open het <strong>PostController.php<\/strong> bestand en maak een <code>index<\/code> controller method. De controller method rendert een eenvoudige tekst naar de browser. Voeg hiervoor de volgende code toe aan de klasse <code>PostController<\/code>:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">public function index() {\n  $post = \"Laravel Tutorial Series One!\";\n  return view('posts.index', ['post'=&gt;$post]);\n}<\/code><\/pre>\n<p>Deze methode geeft <code>$post<\/code> als contextvariabele door aan de sectie <code>views<\/code> van de index Blade template. <code>$post<\/code> bevat tekst om weer te geven, die hier zegt: &#8220;Laravel Tutorial Series One!&#8221; Je zult dit later vervangen binnen de berichten door de loop.<\/p>\n<ol start=\"3\">\n<li>Maak twee nieuwe mappen in de<strong> resources\/views<\/strong> map: <strong>layouts <\/strong>en <strong>posts<\/strong>.<\/li>\n<li>Maak in de <strong>layouts <\/strong>map een <strong>app.blade.php<\/strong> bestand. Andere Blade bestanden zullen hiervan inheriten.<\/li>\n<li>Kopieer deze code in <strong>app.blade.php<\/strong>:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"{{ str_replace('_', '-', app()-&gt;getLocale()) }}\"&gt;\n\n&lt;head&gt;\n  &lt;meta charset=\"utf-8\"&gt;\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"&gt;\n  &lt;title&gt;Blog&lt;\/title&gt;\n  &lt;!-- Styles \u2192\n  &lt;link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.2.3\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65\" crossorigin=\"anonymous\"&gt;\n  @vite(['resources\/css\/app.css', 'resources\/js\/app.js'])\n&lt;\/head&gt;\n\n&lt;!-- Navbar \u2192\n&lt;header&gt;\n  &lt;nav class=\"navbar bg-primary\"&gt;\n    &lt;div class=\"container-fluid\"&gt;\n      &lt;a class=\"navbar-brand\" href=\"{{ route('posts.index') }}\"&gt;Mini-Blog&lt;\/a&gt;\n    &lt;\/div&gt;\n  &lt;\/nav&gt;\n&lt;\/header&gt;\n\n<!-- Body -->\n&lt;body&gt;\n  @yield('content')\n&lt;\/body&gt;\n\n<!-- Footer -->&lt;!-- Footer --&gt;\n&lt;footer class=\"footer mt-auto py-3 bg-dark\"&gt;\n  &lt;div class=\"container d-lg-flex justify-content-between\"&gt;\n    &lt;span class=\"text-light\"&gt;Mini-Blog \u00a9 2023&lt;\/span&gt;\n  &lt;\/div&gt;\n&lt;\/footer&gt;\n\n&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/sweetalert2@11\"&gt;&lt;\/script&gt;\n&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.2.3\/dist\/js\/bootstrap.bundle.min.js\"  integrity=\"sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK\/7HAuoJl+0I4\" crossorigin=\"anonymous\"&gt;&lt;\/script&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Met deze HTML code importeer je Bootstrap versie 5.2.3 en Vite om de JavaScript en CSS assets te bundelen. De gegenereerde pagina heeft een header met een navbar en een footer met de scripts eronder. In de body wordt dynamische content weergegeven vanuit andere Blade bestanden met behulp van <code>@yield('content')<\/code>.<\/p>\n<p>De <strong>posts <\/strong>directory bevat de Blade bestanden voor het implementeren van create en read operaties.<\/p>\n<ol start=\"6\">\n<li>Maak in de <strong>posts <\/strong>directory een Blade bestand genaamd <strong>index.blade.php<\/strong> en voeg de volgende code toe:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">@extends('layouts.app')\n@section('content')\n&lt;div class=\"container\"&gt;\n  &lt;div class=\"titlebar\"&gt;\n    &lt;h1&gt;Blog list&lt;\/h1&gt;\n  &lt;\/div&gt;\n  &lt;hr&gt;\n  &lt;p&gt;The Blog 1 - {{ $post }}&lt;\/p&gt;\n&lt;\/div&gt;\n@endsection<\/code><\/pre>\n<p>Deze code is een uitbreiding van het <strong>app.blade.php<\/strong> bestand op de layout pagina. Wanneer het wordt weergegeven in de browser, toont het de inhoud van elke blogpost en de navigatiebalk en voettekst die zijn overgenomen van het <strong>app.blade.php <\/strong>bestand in de <strong>layout<\/strong> map. Tussen de section tags geef je de inhoud van de controller door om te renderen in de browser wanneer je de applicatie uitvoert.<\/p>\n<ol start=\"7\">\n<li>Stel de route in in de <strong>routes <\/strong>map. Het instellen van de route zorgt voor het automatisch laden door de <code>RouteServiceProvider<\/code> in de <strong>App\/Providers<\/strong> map. De <code>RouteServiceProvider<\/code> is de klasse die verantwoordelijk is voor het laden van de routebestanden van de applicatie.<\/li>\n<li>Importeer <strong>PostController <\/strong>in het bestand <strong>routes\/web.php<\/strong> met <code>use AppHttpControllersPostController<\/code>.<\/li>\n<li>Stel vervolgens de route in door <code>Route::resource('posts', PostController::class);<\/code> toe te voegen aan het bestand <strong>routes\/web.php<\/strong>.<\/li>\n<li>Terwijl de Vite ontwikkelingsserver nog draait, gebruik je <code>php artisan serve<\/code> om de applicatie in je terminal uit te voeren.<\/li>\n<li>Open met je browser <code>http:\/\/127.0.0.1:8000\/posts<\/code> om je nieuwe blogberichtenlijst te zien.<\/li>\n<\/ol>\n<p>De pagina zou er als volgt uit moeten zien:<\/p>\n<figure style=\"width: 1280px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-blog-list-preview.png\" alt=\"De blogapplicatie wordt weergegeven in de browser\" width=\"1280\" height=\"267\"><figcaption class=\"wp-caption-text\">De blogapplicatie wordt weergegeven in de browser<\/figcaption><\/figure>\n<p>In de volgende sectie defini\u00ebren we de controller-methodes voor het weergeven van alle berichten, het maken van een bericht en het opslaan van een bericht. Daarna voegen we de routes toe en maken we de Blade bestanden in de corresponderende secties.<\/p>\n<h2>De pagina met blogberichten maken<\/h2>\n<p>Maak blogberichten door een titel in te voeren, een beschrijving toe te voegen en een afbeelding te uploaden. Geef vervolgens je berichten weer in opeenvolgende volgorde.<\/p>\n<ol start=\"1\">\n<li>Open het bestand <strong>Post.php<\/strong> in de map <strong>app\/Models<\/strong>.<\/li>\n<li>Voeg in de klasse <code>Post<\/code> onder het codeblok <code>use HasFactory;<\/code> <code>protected $fillable = ['title', 'description', 'image'];<\/code> toe.<\/li>\n<\/ol>\n<p>Deze code beschermt je modelattributen tegen mass assignments.<\/p>\n<ol start=\"3\">\n<li>Importeer in je <strong>app\/Http\/Controllers\/PostController.php<\/strong> bestand het <code>Post<\/code> model met <code>use AppModelsPost;<\/code>.<\/li>\n<li>Vervang de controllermethoden <code>index<\/code> en <code>create<\/code> die eerder zijn gemaakt in de klasse <code>PostController<\/code> door de onderstaande code:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\/\/ Show all posts\npublic function index() {\n  $posts = Post::orderBy('created_at', 'desc')-&gt;get();\n  return view('posts.index', ['posts' =&gt; $posts]);\n}\n    \n\/\/ Create post\npublic function create() {\n  return view('posts.create');\n}<\/code><\/pre>\n<p>In de methode <code>index<\/code> die je zojuist hebt gemaakt, fetcht de PHP applicatie alle berichten, zet ze in chronologische volgorde en slaat ze op in een <code>posts<\/code> variabele. In de retourweergave worden de berichten doorgegeven aan het bestand <strong>index.blade.php<\/strong> als een contextvariabele in de map <strong>views\/posts<\/strong>. De methode <code>create<\/code> retourneert een <strong>create.blade.php<\/strong> bestand en plaatst het in de <strong>views\/posts<\/strong> directory als een gebruiker een nieuw bericht probeert te maken.<\/p>\n<ol start=\"5\">\n<li>Maak een <code>store<\/code> controller methode met de onderstaande code (om blogposts op te slaan in de database). Voeg deze code toe aan de <code>PostController<\/code> class onder de <code>index<\/code> en <code>create<\/code> controller methodes.<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\/\/ Store post\npublic function store(Request $request) {\n  \/\/ validations\n  $request-&gt;validate([\n    'title' =&gt; 'required',\n    'description' =&gt; 'required',\n    'image' =&gt; 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',\n  ]);\n\n  $post = new Post;\n\n  $file_name = time() . '.' . request()-&gt;image-&gt;getClientOriginalExtension();\n  request()-&gt;image-&gt;move(public_path('images'), $file_name);\n\n  $post-&gt;title = $request-&gt;title;\n  $post-&gt;description = $request-&gt;description;\n  $post-&gt;image = $file_name;\n\n  $post-&gt;save();\n  return redirect()-&gt;route('posts.index')-&gt;with('success', 'Post created successfully.');\n}<\/code><\/pre>\n<p>De methode <code>store<\/code> handelt clientverzoeken af met betrekking tot de gegevens in zijn body, dus hij neemt <code>request<\/code> als argument. Vervolgens valideer je de velden die worden gebruikt bij het maken van een bericht en maak je een <code>post<\/code> instantie van het <code>Post<\/code> model. De ingevoerde veldgegevens worden dan toegewezen aan de aangemaakte instantie en opgeslagen. De pagina wordt doorgestuurd naar de <code>index<\/code> weergave met een flashtekst die zegt: &#8220;Post created successfully.&#8221;<\/p>\n<h3>Routes toevoegen aan je berichten<\/h3>\n<p>Om de routes te registreren in je <strong>web.php<\/strong> bestand:<\/p>\n<ol start=\"1\">\n<li>Open het bestand <strong>web.php<\/strong> in de map <strong>routes<\/strong> in de root van je project.<\/li>\n<li>Registreer de routes van de controller methods door de bestaande code te vervangen door dit:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse <span id=\"urn:enhancement-e54a763d-eee8-4065-a262-a961d77fb4c9\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-ffdc6006-ea03-4846-8482-c29347642c08\" class=\"textannotation\">Http<\/span>\\Controllers\\PostController;\n\nRoute::resource('\/', PostController::class)-&gt;names([\n  'index' =&gt; 'posts.index',\n  'create' =&gt; 'posts.create',\n  'store' =&gt; 'posts.store',\n  'show' =&gt; 'posts.show',\n]);<\/code><\/pre>\n<p>Deze controller gebruikt deze routes om je gegevensobjecten te maken, op te slaan en weer te geven.<\/p>\n<h3>Blade bestanden maken<\/h3>\n<p>Om de views te maken, keer je terug naar de klasse <code>PostController<\/code>:<\/p>\n<ol start=\"1\">\n<li>Maak in de map <strong>resources\/views\/posts<\/strong> een Blade bestand met de naam <strong>create.blade.php<\/strong> en voeg de onderstaande code toe:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">@extends('layouts.app')\n@section('content')\n&lt;<span id=\"urn:enhancement-1826b5af-cd99-4a60-8a29-6a153e985dbb\" class=\"textannotation\">div<\/span> <span id=\"urn:enhancement-ef93af53-929f-4236-ba20-ef9ab55c3d01\" class=\"textannotation\">class<\/span>=\"<span id=\"urn:enhancement-b23af5e5-ab30-4853-a8df-7e17f3a00b5c\" class=\"textannotation\">container<\/span>\"&gt;\n  &lt;h1&gt;Add Post&lt;\/h1&gt;\n  &lt;section <span id=\"urn:enhancement-890c6bfc-fa11-4b88-a7c0-8708f71e0cb5\" class=\"textannotation\">class<\/span>=\"mt-3\"&gt;\n    &lt;form <span id=\"urn:enhancement-735af8ba-84db-4b9b-b455-e32d88e99932\" class=\"textannotation\">method<\/span>=\"post\" <span id=\"urn:enhancement-bf4fccb8-faac-4810-9831-f080212b867b\" class=\"textannotation\">action<\/span>=\"{{ <span id=\"urn:enhancement-30b98172-b8ad-458f-bfba-c69f14142100\" class=\"textannotation\">route<\/span>('posts.store') }}\" enctype=\"multipart\/form-<span id=\"urn:enhancement-d271f640-de48-40c8-8ba2-9641874e08c6\" class=\"textannotation\">data<\/span>\"&gt;\n      @csrf\n      &lt;!-- Error message when <span id=\"urn:enhancement-9ad06a86-8138-47dd-bdb4-7a51e4ebfcf7\" class=\"textannotation\">data<\/span> is not inputted --&gt;\n      @if ($errors-&gt;any())\n        &lt;div class=\"alert alert-danger\"&gt;\n          &lt;ul&gt;\n            @foreach ($errors-&gt;all() as $error)\n              &lt;li&gt;{{ $error }}&lt;\/li&gt;\n            @endforeach\n          &lt;\/ul&gt;\n        &lt;\/div&gt;\n      @endif\n      &lt;div class=\"card p-3\"&gt;\n        &lt;label for=\"floatingInput\"&gt;Title&lt;\/label&gt;\n        &lt;input class=\"form-control\" type=\"text\" name=\"title\"&gt;\n        &lt;label for=\"floatingTextArea\"&gt;Description&lt;\/label&gt;\n        &lt;textarea class=\"form-control\" name=\"description\" id=\"floatingTextarea\" cols=\"30\" rows=\"10\"&gt;&lt;\/textarea&gt;\n        &lt;label for=\"formFile\" class=\"form-label\"&gt;Add Image&lt;\/label&gt;\n        &lt;img src=\"\" alt=\"\" class=\"img-blog\"&gt;\n        &lt;input class=\"form-control\" type=\"file\" name=\"image\"&gt;\n      &lt;\/div&gt;\n      &lt;button class=\"btn btn-secondary m-3\"&gt;Save&lt;\/button&gt;\n    &lt;\/form&gt;\n  &lt;\/section&gt;\n    \n&lt;\/div&gt;\n@endsection<\/code><\/pre>\n<p>In deze code inherit <strong>create.blade.php<\/strong> de inhoud van <strong>app.blade.php<\/strong> in de <strong>layouts<\/strong> map met <code>@extends('layouts.app')<\/code>. Deze inhoud bevat een header, navigatiebalk en footer. Nadat je de tekst <code>Add Post<\/code> hebt toegevoegd in de tag <code>h1<\/code>, heb je een formulier gemaakt met de methode <code>post<\/code> dat de actie <code>{{route('posts.store')}}<\/code> bevat.<\/p>\n<p>De code <code>enctype=\"multipart\/form-data\"<\/code> maakt het uploaden van afbeeldingen mogelijk en <code>csrf<\/code> beschermt je formulier tegen cross-site aanvallen. Vervolgens geven de foutmeldingen ongeldige veldinvoer weer en gebruik je<code>field attributes<\/code> om labels en invoer voor het formulier te maken.<\/p>\n<ol start=\"2\">\n<li>Vervang nu de code in het bestand <strong>index.blade.php<\/strong> door de onderstaande code om alle blogberichten weer te geven:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">@extends('layouts.app')\n@section('content')\n&lt;div class=\"container\"&gt;\n  &lt;div class=\"titlebar\"&gt;\n    &lt;a class=\"btn btn-secondary float-end mt-3\" href=\"{{ route('posts.create') }}\" role=\"button\"&gt;Add Post&lt;\/a&gt;\n    &lt;h1&gt;Mini post list&lt;\/h1&gt;\n  &lt;\/div&gt;\n    \n  &lt;hr&gt;\n  &lt;!-- <span id=\"urn:enhancement-f064a49a-2e77-47bb-8ab7-4590f41ea862\" class=\"textannotation\">Message<\/span> if a post is posted successfully --&gt;\n  @if ($message = Session::get('success'))\n  &lt;div class=\"alert alert-success\"&gt;\n    &lt;p&gt;{{ $message }}&lt;\/p&gt;\n  &lt;\/div&gt;\n  @endif\n         @if (count($posts) &gt; 0)\n    @foreach ($posts as $post)\n      &lt;div class=\"row\"&gt;\n        &lt;div class=\"col-12\"&gt;\n          &lt;div class=\"row\"&gt;\n            &lt;div class=\"col-2\"&gt;\n              &lt;img class=\"img-fluid\" style=\"max-width:50%;\" src=\"{{ asset('images\/'.$post-&gt;image)}}\" alt=\"\"&gt;\n            &lt;\/div&gt;\n            &lt;div class=\"col-10\"&gt;\n              &lt;h4&gt;{{$post-&gt;title}}&lt;\/h4&gt;\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n          &lt;p&gt;{{$post-&gt;description}}&lt;\/p&gt;\n          &lt;hr&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    @endforeach\n  @else\n    &lt;p&gt;No Posts found&lt;\/p&gt;\n  @endif\n&lt;\/div&gt;\n@endsection<\/code><\/pre>\n<p>Deze code voegt een knop <strong>Add post <\/strong>toe. Wanneer er op wordt geklikt, wordt er een bericht aangemaakt en worden eventuele gegevens doorgegeven aan de pagina. De voorwaarde <code>if<\/code> controleert of er gegevens in de database staan. Als er gegevens zijn, wordt het bericht doorgelaten. Zo niet, dan wordt &#8220;No Posts found&#8221; weergegeven.<\/p>\n<h3>Structuur aanbrengen in je pagina&#8217;s<\/h3>\n<p>Je kunt nu je applicatie uitvoeren met <code>php artisan serve<\/code> om blogberichten te maken en weer te geven. Open <code>&lt;a href=\"http:\/\/127.0.0.1:8000\"&gt;http:\/\/127.0.0.1:8000&lt;\/a &gt;<\/code> en de pagina zou er zo uit moeten zien:<\/p>\n<figure style=\"width: 1343px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/list-preview-no-posts.png\" alt=\"De blogapplicatie verschijnt in de browser\" width=\"1343\" height=\"350\"><figcaption class=\"wp-caption-text\">De blogapplicatie verschijnt in de browser<\/figcaption><\/figure>\n<p>Als je een bericht toevoegt, ziet het er als volgt uit:<\/p>\n<figure style=\"width: 1359px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/preview-post.png\" alt=\"De blogapplicatie toont een bericht in de browser\" width=\"1359\" height=\"641\"><figcaption class=\"wp-caption-text\">De blogapplicatie toont een bericht in de browser<\/figcaption><\/figure>\n<h2>Je Laravel blog deployen naar Kinsta<\/h2>\n<p>Om je Laravel applicatie te deployen en te testen gebruik je <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Kinsta&#8217;s Applicatie Hosting dienst<\/a>:<\/p>\n<ol start=\"1\">\n<li>Maak een <strong>.htaccess<\/strong> bestand.<\/li>\n<li>Plaats de code in een repository.<\/li>\n<li>Maak een database aan.<\/li>\n<li>Stel een project in op MyKinsta.<\/li>\n<li>Bouw en deploy je blog.<\/li>\n<\/ol>\n<h3>Een .htaccess bestand maken<\/h3>\n<p>Maak in de hoofdmap van het project een bestand met de naam <strong>.htaccess<\/strong> en voeg de volgende code toe:<\/p>\n<pre><code class=\"language-apacheconf\">&lt;IfModule mod_rewrite.c&gt;\n  RewriteEngine On\n  RewriteRule ^(.*)$ public\/$1 [L]\n&lt;\/IfModule&gt;<\/code><\/pre>\n<p>Deze code leidt je applicatieverzoeken om naar <strong>public\/index.php<\/strong> binnen de deployment.<\/p>\n<h3>Je code naar een repository pushen<\/h3>\n<p>Maak een repository aan voor je project en publiceer de code. Je kunt GitHub, GitLab of Bitbucket gebruiken om je code te hosten en te deployen naar <a href=\"https:\/\/my.kinsta.com\/login?lang=nl\">MyKinsta<\/a>.<\/p>\n<h3>De database instellen in je MyKinsta Dashboard<\/h3>\n<p>Om een database aan te maken op MyKinsta:<\/p>\n<ol start=\"1\">\n<li>Klik op de knop <strong>Dienst toevoegen<\/strong> en selecteer <strong>Database<\/strong>.<\/li>\n<li>Voer de gegevens van je database in zoals hieronder getoond. Merk op dat voor een succesvolle deployment je de <strong>gebruikersnaam van de Database<\/strong> als standaardwaarde moet laten staan.<\/li>\n<\/ol>\n<figure style=\"width: 1136px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/mykinsta-create-database.png\" alt=\"Een database maken in MyKinsta\" width=\"1136\" height=\"739\"><figcaption class=\"wp-caption-text\">Een database maken in MyKinsta<\/figcaption><\/figure>\n<p>De details bevatten de <strong>naam van de database<\/strong>, <strong>de weergavenaam<\/strong>, <strong>het type database,<\/strong> <strong>de versie<\/strong>, <strong>de gebruikersnaam van de database<\/strong>, <strong>de locatie van het datacenter<\/strong>\u00a0en <strong>de grootte<\/strong>. Deze demonstratie gebruikt MariaDB voor de database en de <strong>grootte is Db3 (1CPU \/ 4GB RAM \/ 10GB schijfruimte 65 USD \/ maand)<\/strong>. Je kunt het databasetype en de databasegrootte kiezen die passen bij je specifieke behoeften.<\/p>\n<ol start=\"3\">\n<li>Klik op <strong>Doorgaan<\/strong>.<\/li>\n<li>Bevestig je maandelijkse kosten en betaalmethode en klik dan op <strong>Database maken<\/strong>.<\/li>\n<\/ol>\n<h3>Het project instellen op MyKinsta<\/h3>\n<p>Om je applicatie te deployen op MyKinsta:<\/p>\n<ol start=\"1\">\n<li>Klik op het <strong>Dashboard<\/strong> paneel.<\/li>\n<li>Klik op <strong>Dienst toevoegen<\/strong> en selecteer <strong>Applicatie<\/strong>, zoals hieronder getoond:<\/li>\n<\/ol>\n<figure style=\"width: 1399px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/mykinsta-create-app.png\" alt=\"MyKinsta dashboard bij het toevoegen van applicatie dienst\" width=\"1399\" height=\"493\"><figcaption class=\"wp-caption-text\">MyKinsta dashboard bij het toevoegen van applicatie dienst<\/figcaption><\/figure>\n<p>MyKinsta leidt je door naar de pagina <strong>Applicatie toevoegen<\/strong>.<\/p>\n<ol start=\"1\">\n<li>In het gedeelte <strong>Selecteer branch<\/strong> kaart, selecteer je GitHub repository en schakel dan het selectievakje <strong>Voeg deployment to bij commit <\/strong>in.<\/li>\n<li>In de <strong>Basis details <\/strong>voer je de applicatienaam in en selecteer je de datacenterlocatie voor je applicatie.<\/li>\n<li>Omdat Laravel een app key nodig heeft tijdens de deployment, voeg je in de <strong>omgevingsvariabelen<\/strong> kaart een <strong>APP_KEY<\/strong> toe als Key 1. Je kunt de <strong>APP_KEY<\/strong> gebruiken die is gedefinieerd in je lokale <strong>.env<\/strong> bestand of gebruik een <a href=\"https:\/\/generate-random.org\/laravel-key-generator?count=1\">online Laravel Key generator<\/a> om er een te krijgen.<\/li>\n<li>Klik op <strong>Doorgaan<\/strong>.<\/li>\n<li>Selecteer de build resources (CPU en RAM) voor je applicatie. Deze demonstratie gebruikt de <strong>standaard bouwmachine (1CPU \/ 4 GB RAM) &#8211; 0,02USD \/ minuut<\/strong>.<\/li>\n<li>Laat het keuzerondje <strong>Automatisch container image instellen<\/strong> ingeschakeld.<\/li>\n<li>Klik op <strong>Doorgaan<\/strong>.<\/li>\n<li>Op de pagina <strong>Je processen instellen<\/strong> kun je de grootte van de pod en de instantie van je applicatie wijzigen door deze vakjes te selecteren. In deze demonstratie worden de standaardwaarden gebruikt.<\/li>\n<li>Klik op <strong>Doorgaan<\/strong>.<\/li>\n<li>Klik ten slotte op de knop <strong>Betaalmethode bevestigen<\/strong> om de deploymentvan je applicatie te starten. Als je hierop klikt, ga je naar de pagina <strong>Deployment details<\/strong> om de voortgang van je deployment te bekijken.<\/li>\n<\/ol>\n<h3>Je applicatie bouwen en deployen<\/h3>\n<p>Nu de database en de applicatie gehost zijn, koppel je de database aan je applicatie en bouw je de deployment.<\/p>\n<p>Om de database te verbinden, gebruik je de externe verbindingen van je gehoste database. Op het tabblad <strong>Info <\/strong>van je gehoste database zie je <strong>Externe verbindingen<\/strong>, zoals hieronder weergegeven:<\/p>\n<figure style=\"width: 1120px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/mykinsta-db-external-connections.png\" alt=\"Externe verbindingen voor je gehoste database\" width=\"1120\" height=\"498\"><figcaption class=\"wp-caption-text\">Externe verbindingen voor je gehoste database<\/figcaption><\/figure>\n<ol start=\"1\">\n<li>Navigeer op de pagina <strong>Instellingen <\/strong>van de uitgewerkte app naar de kaart<strong> Omgevingsvariabele<\/strong>.<\/li>\n<li>Klik op <strong>Omgevingsvariabele toevoegen<\/strong> om de externe verbindingen van je gehoste database met de bijbehorende waarde toe te voegen. Gebruik dezelfde variabelen als in je <strong>.env<\/strong> bestand.<\/li>\n<\/ol>\n<figure style=\"width: 1107px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/mykinsta-app-env-variables.png\" alt=\"De omgevingsvariabelen voor je gehoste database\" width=\"1107\" height=\"700\"><figcaption class=\"wp-caption-text\">De omgevingsvariabelen voor je gehoste database<\/figcaption><\/figure>\n<p>Deze schermafbeelding is handig als je overweegt om de &lt;code&gt;env&lt;\/code&gt; variabelen die je handmatig hebt bewerkt te markeren om ze te onderscheiden van de anderen.<\/p>\n<p>De <strong>APP_URL <\/strong>is de URL van je gehoste applicatie en <strong>DB_CONNECTION<\/strong> is <code>mysql<\/code>.<\/p>\n<ol start=\"1\">\n<li>Ga naar de <strong>Instellingen<\/strong> pagina van je applicatie.<\/li>\n<li>In de <strong>Buildpack <\/strong>kaart voeg je PHP en Node.js toe als build packs. Omdat dit een PHP applicatie is, moet je het PHP buildpack als laatste toevoegen.<\/li>\n<li>Klik op <strong>Nu deployen <\/strong>om je applicatie opnieuw te bouwen.<\/li>\n<\/ol>\n<p>Voeg vervolgens een proces toe dat de database zal migreren.<\/p>\n<ol start=\"1\">\n<li>Ga naar het tabblad <strong>Processen <\/strong>op de pagina van je gehoste applicatie.<\/li>\n<li>Selecteer <strong>Proces aanmaken <\/strong>op de kaart <strong>Runtimeprocessen<\/strong>.<\/li>\n<li>Voer <strong>Migratie<\/strong> in als naam, <strong>achtergrondworker <\/strong>als type en <code>php artisan migrate --force<\/code> als startcommando. Je kunt de podgrootte en instanties op de standaardwaarden laten staan.<\/li>\n<li>Selecteer <strong>Doorgaan <\/strong>om het proces aan te maken. Deze actie activeert een nieuwe build en deployt de applicatie opnieuw.<\/li>\n<li>Klik op het tabblad <strong>Domeinen <\/strong>van je applicatie op de link van je applicatie. Je ziet dat de applicatie nu draait.<\/li>\n<li>Merk op dat de blogapplicatie die is gedeployd op MyKinsta geen berichten weergeeft. Maak een nieuw bericht door de titel in te voeren, een beschrijving toe te voegen en een afbeelding te kiezen.<\/li>\n<\/ol>\n<h2>Samenvatting<\/h2>\n<p>Laravel maakt het eenvoudig om snel een eenvoudige blog te ontwikkelen. Het snel laden van pagina&#8217;s, de robuuste controllerarchitectuur en de competente beveiliging maken het verbeteren van de prestaties van een applicatie eenvoudig. Ondertussen kun je met MyKinsta je webapplicaties snel en effectief lanceren en deployen. MyKinsta&#8217;s flexibele prijsmodel is gebaseerd op gebruik, waardoor verborgen kosten worden ge\u00eblimineerd.<\/p>\n<p>Wanneer Kinsta je Laravel applicatie host, draait deze op het <a href=\"https:\/\/kinsta.com\/nl\/blog\/cloudplatform-voor-developers\/\">Google Cloud Platform op hun Premium Tier<\/a>, waardoor deze zo snel mogelijk is. Kinsta bevat ook zakelijke DDoS bescherming en -mitigatie met Cloudflare en geavanceerde firewalls om kwaadwillenden op afstand te houden en nog veel meer.<\/p>\n<p>Start nu je <a href=\"https:\/\/kinsta.com\/nl\/registreren\/?product_type=app-db\">gratis trial van<\/a> Applicatie Hosting om de ontwikkeling en hosting van je webapplicaties te stroomlijnen!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel is een PHP webapplicatie framework met een expressieve, elegante syntaxis. Het framework bevat een uitgebreide bibliotheek met pakketten en neemt veel van het programmeerwerk voor &#8230;<\/p>\n","protected":false},"author":290,"featured_media":54715,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[866],"class_list":["post-54714","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Zo maak je een blog in Laravel - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Deze stap-voor-stap handleiding neemt je mee door het hele proces van het bouwen van een blog met Laravel en het online zetten ervan bij Kinsta.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zo maak je een blog in Laravel\" \/>\n<meta property=\"og:description\" content=\"Deze stap-voor-stap handleiding neemt je mee door het hele proces van het bouwen van een blog met Laravel en het online zetten ervan bij Kinsta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-04T07:25:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-09T08:04:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Marcia Ramos\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Deze stap-voor-stap handleiding neemt je mee door het hele proces van het bouwen van een blog met Laravel en het online zetten ervan bij Kinsta.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcia Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/\"},\"author\":{\"name\":\"Marcia Ramos\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\"},\"headline\":\"Zo maak je een blog in Laravel\",\"datePublished\":\"2023-08-04T07:25:47+00:00\",\"dateModified\":\"2023-08-09T08:04:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/\"},\"wordCount\":2702,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/\",\"name\":\"Zo maak je een blog in Laravel - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg\",\"datePublished\":\"2023-08-04T07:25:47+00:00\",\"dateModified\":\"2023-08-09T08:04:12+00:00\",\"description\":\"Deze stap-voor-stap handleiding neemt je mee door het hele proces van het bouwen van een blog met Laravel en het online zetten ervan bij Kinsta.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Zo maak je een blog in Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\",\"name\":\"Marcia Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g\",\"caption\":\"Marcia Ramos\"},\"description\":\"I'm the Editorial Team Lead at Kinsta. I'm a open source enthusiast and I love coding. With more than 10 years of technical writing and editing for the tech industry, I love collaborating with people to create clear and concise pieces of content and improve workflows.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/marciadiasramos\/\"],\"honorificSuffix\":\"B.Sc.\",\"gender\":\"Female\",\"knowsLanguage\":[\"English\",\"Portuguese\"],\"jobTitle\":\"Editorial Team Lead\",\"worksFor\":\"Kinsta Inc.\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/marciaramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zo maak je een blog in Laravel - Kinsta\u00ae","description":"Deze stap-voor-stap handleiding neemt je mee door het hele proces van het bouwen van een blog met Laravel en het online zetten ervan bij Kinsta.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/","og_locale":"nl_NL","og_type":"article","og_title":"Zo maak je een blog in Laravel","og_description":"Deze stap-voor-stap handleiding neemt je mee door het hele proces van het bouwen van een blog met Laravel en het online zetten ervan bij Kinsta.","og_url":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-08-04T07:25:47+00:00","article_modified_time":"2023-08-09T08:04:12+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg","type":"image\/jpeg"}],"author":"Marcia Ramos","twitter_card":"summary_large_image","twitter_description":"Deze stap-voor-stap handleiding neemt je mee door het hele proces van het bouwen van een blog met Laravel en het online zetten ervan bij Kinsta.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Marcia Ramos","Geschatte leestijd":"17 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/"},"author":{"name":"Marcia Ramos","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116"},"headline":"Zo maak je een blog in Laravel","datePublished":"2023-08-04T07:25:47+00:00","dateModified":"2023-08-09T08:04:12+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/"},"wordCount":2702,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/","url":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/","name":"Zo maak je een blog in Laravel - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg","datePublished":"2023-08-04T07:25:47+00:00","dateModified":"2023-08-09T08:04:12+00:00","description":"Deze stap-voor-stap handleiding neemt je mee door het hele proces van het bouwen van een blog met Laravel en het online zetten ervan bij Kinsta.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-blog.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/"},{"@type":"ListItem","position":3,"name":"Zo maak je een blog in Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116","name":"Marcia Ramos","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g","caption":"Marcia Ramos"},"description":"I'm the Editorial Team Lead at Kinsta. I'm a open source enthusiast and I love coding. With more than 10 years of technical writing and editing for the tech industry, I love collaborating with people to create clear and concise pieces of content and improve workflows.","sameAs":["https:\/\/www.linkedin.com\/in\/marciadiasramos\/"],"honorificSuffix":"B.Sc.","gender":"Female","knowsLanguage":["English","Portuguese"],"jobTitle":"Editorial Team Lead","worksFor":"Kinsta Inc.","url":"https:\/\/kinsta.com\/nl\/blog\/author\/marciaramos\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/54714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=54714"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/54714\/revisions"}],"predecessor-version":[{"id":54792,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/54714\/revisions\/54792"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/translations\/es"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/54714\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/54715"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=54714"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=54714"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=54714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}