{"id":64599,"date":"2023-08-04T08:23:31","date_gmt":"2023-08-04T07:23:31","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=64599&#038;preview=true&#038;preview_id=64599"},"modified":"2023-08-14T09:10:35","modified_gmt":"2023-08-14T08:10:35","slug":"laravel-blog","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/","title":{"rendered":"Wie man einen Blog in Laravel erstellt"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-laravel\/\">Laravel<\/a> ist ein PHP-Framework f\u00fcr Webanwendungen mit einer ausdrucksstarken, eleganten Syntax. Es verf\u00fcgt \u00fcber eine umfangreiche Bibliothek von Paketen und nimmt dir einen Gro\u00dfteil der l\u00e4stigen Programmierarbeit ab, sodass du dich auf deine Kreativit\u00e4t konzentrieren kannst.<\/p>\n<p>Eine kreative Anwendung f\u00fcr Laravel ist die Erstellung eines pers\u00f6nlichen Blogs. In diesem Leitfaden wird beschrieben, wie du mit Laravel einen Blog auf Kinsta erstellst und ver\u00f6ffentlichst.<\/p>\n<p>Um einen Einblick in das Projekt zu bekommen, schau dir den <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-blog\" target=\"_blank\" rel=\"noopener noreferrer\">kompletten Projektcode<\/a> an.<\/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>Voraussetzungen<\/h2>\n<p>Um diesem Tutorial folgen zu k\u00f6nnen, musst du folgende Voraussetzungen erf\u00fcllen:<\/p>\n<ul>\n<li>Einen Webserver. In diesem Lernprogramm wird <a href=\"https:\/\/www.apachefriends.org\/download.htmlss.html\" target=\"_blank\" rel=\"noopener noreferrer\">XAMPP<\/a> verwendet.<\/li>\n<li>Ein Konto auf GitHub, GitLab oder Bitbucket, um den Code deiner Anwendung zu ver\u00f6ffentlichen.<\/li>\n<li><a href=\"https:\/\/laravel.com\/docs\/7.x\/installation\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel ist installiert<\/a>.<\/li>\n<li>Ein aktives MyKinsta-Konto f\u00fcr das Anwendungs-Hosting. Melde dich <a href=\"https:\/\/kinsta.com\/de\/anmelden\/?product_type=app-db\">f\u00fcr eine kostenlose Testversion an<\/a>, wenn du noch keine hast.<\/li>\n<\/ul>\n<p>Vergewissere dich, dass die Moduldienste <strong>Apache <\/strong>und <strong>MySQL <\/strong>im XAMPP-Kontrollzentrum laufen. Falls nicht, klicke in der Spalte<strong> Aktionen<\/strong> auf die Schaltfl\u00e4che <strong>Start <\/strong>f\u00fcr jeden Dienst. Dein XAMPP-Kontrollzentrum sollte wie folgt aussehen:<\/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=\"Im XAMPP-Kontrollfeld werden verschiedene Moduldienste angezeigt.\" width=\"1089\" height=\"448\"><figcaption class=\"wp-caption-text\">XAMPP-Kontrollzentrum<\/figcaption><\/figure>\n<p>Standardm\u00e4\u00dfig l\u00e4uft MySQL\/MariaDB auf Port 3306. Notiere dir den Port, wenn du ihn \u00e4nderst.<\/p>\n<p>Wenn du einen anderen Webserver als XAMPP verwendest, stelle sicher, dass du <a href=\"https:\/\/httpd.apache.org\/download.cgi\" target=\"_blank\" rel=\"noopener noreferrer\">Apache<\/a> oder eine andere Serversoftware verwendest und den <a href=\"https:\/\/mariadb.org\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">MariaDB-Server<\/a> auf deinem lokalen Rechner installiert hast.<\/p>\n<h3>Schnellstart mit phpMyAdmin<\/h3>\n<ol start=\"1\">\n<li>Wenn MySQL und Apache laufen, gehe zu deinem Browser.<\/li>\n<li>\u00d6ffne phpMyAdmin und f\u00fcge <code>http:\/\/localhost\/phpmyadmin\/<\/code> ein. Es sollte folgendes angezeigt werden:<\/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 wird im Browser ge\u00f6ffnet\" width=\"1359\" height=\"397\"><figcaption class=\"wp-caption-text\">phpMyAdmin wird im Browser ge\u00f6ffnet<\/figcaption><\/figure>\n<p>phpMyAdmin ist ein Datenbankverwaltungstool f\u00fcr MySQL und MariaDB.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Du kannst jedes beliebige Datenbankmanagementsystem verwenden, aber dieses Tutorial benutzt MariaDB, das eine \u00e4hnliche Verbindung zu Laravel hat wie MySQL. Die Laravel-Konfiguration ist in beiden Datenbanken gleich.<\/p>\n<\/aside>\n\n<h2>Ein neues Laravel-Projekt erstellen<\/h2>\n<p>Jetzt kannst du damit beginnen, den Blog mit Laravel zu erstellen. F\u00fcr diesen Leitfaden haben wir einen Computer mit Windows verwendet.<\/p>\n<ol start=\"1\">\n<li>Rufe das Terminal oder die Befehlszeilenschnittstelle (CLI) deines Computers auf.<\/li>\n<li>Erstelle ein Laravel-Projekt namens <strong>blog<\/strong> mit dem Befehl <code>laravel new blog<\/code>.<\/li>\n<li>\u00d6ffne das <strong>Blog<\/strong>-Verzeichnis deines Projekts mit dem Befehl <code>cd blog<\/code>.<\/li>\n<li>\u00d6ffne dann das Verzeichnis in deinem Code-Editor.<\/li>\n<li>Um zu \u00fcberpr\u00fcfen, ob du das Projekt erfolgreich erstellt hast, f\u00fchre <code>php artisan serve<\/code> in deinem Terminal oder deiner CMD aus.<\/li>\n<li>Klicke auf die lokale Adressausgabe, um sie an den Browser zu \u00fcbergeben. Der Browser sollte die standardm\u00e4\u00dfige Laravel-Willkommensseite anzeigen (siehe unten):<\/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-Willkommensseite, wenn sie an den Browser gesendet wird\" width=\"1279\" height=\"801\"><figcaption class=\"wp-caption-text\">Laravel-Willkommensseite<\/figcaption><\/figure>\n<h3>Konfiguriere die Datenbank<\/h3>\n<p>Erstelle und konfiguriere die Datenbank, indem du in deinem Browser zu <strong>phpMyAdmin<\/strong> zur\u00fcckkehrst und eine Datenbank namens <strong>blog<\/strong> erstellst.<\/p>\n<ol start=\"1\">\n<li>Um die Datenbank zu erstellen, gibst du auf der <strong>Registerkarte<\/strong> <strong>Datenbanken<\/strong> blog\u00a0in das Feld <strong>Datenbank erstellen<\/strong> ein.<\/li>\n<li>Klicke dann auf <strong>Erstellen<\/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=\"Datenbankerstellung im phpMyAdmin-Panel\" width=\"1042\" height=\"312\"><figcaption class=\"wp-caption-text\">Datenbankerstellung im phpMyAdmin-Panel<\/figcaption><\/figure>\n<ol start=\"3\">\n<li>Als N\u00e4chstes aktualisierst du die Datenbankverbindung in deiner <strong>.env<\/strong>-Datei im Stammverzeichnis deines Blog-Projekts. \u00c4ndere die Werte <code>DB_DATABASE<\/code> und <code>DB_PASSWORD<\/code> in die Werte, die du erstellt hast.<\/li>\n<\/ol>\n<p>Die Verbindungsdetails sollten wie folgt aussehen:<\/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>Die anderen Datenbankverbindungsdetails bleiben dieselben wie in der <strong>.env<\/strong>-Datei. Wenn du w\u00e4hrend der Konfiguration einen Verbindungswert \u00e4nderst, z. B. <code>DB_PORT<\/code> von 3306 auf 3307, musst du ihn in der <strong>.env<\/strong>-Datei aktualisieren.<\/p>\n<h3>Erstelle die Beitragstabelle<\/h3>\n<p>Als N\u00e4chstes erstellst du ein Datenbankmodell und migrierst die \u00c4nderungen.<\/p>\n<ol start=\"1\">\n<li>Rufe in deinem Terminal <code>php artisan make:model Post -mc<\/code> auf, um ein Modell namens <strong>Post<\/strong>, eine Tabelle namens <strong>posts<\/strong>, eine Migrationsdatei und einen Controller zu erstellen.<\/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=\"Erstellen eines Modells, einer Migrationsdatei und eines Controllers \u00fcber die Kommandozeile\" width=\"1154\" height=\"140\"><figcaption class=\"wp-caption-text\">Erstellen eines Modells, einer Migrationsdatei und eines Controllers \u00fcber die Kommandozeile<\/figcaption><\/figure>\n<ol start=\"2\">\n<li>\u00dcberpr\u00fcfe das Verzeichnis <strong>database\/migrations<\/strong> und \u00f6ffne die Migrationsdatei, die du gerade erstellt hast. Sie hat das folgende Format: <code>YYYY_MM_DD_ID_create_posts_table.php<\/code>.<\/li>\n<li>In der Methode <code>up()<\/code> der Migrationsdatei erstellst du ein Schema mit den Attributen <code>title<\/code>, <code>description<\/code> und <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>Gehe nun zu deinem Terminal und migriere die \u00c4nderungen mit <code>php artisan migrate<\/code>, wie unten gezeigt:<\/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=\"Migration der Laravel-Datenbank\" width=\"1200\" height=\"224\"><figcaption class=\"wp-caption-text\">Migration der Laravel-Datenbank<\/figcaption><\/figure>\n<ol start=\"5\">\n<li>Gehe in deinem Browser zu <strong>phpMyAdmin<\/strong>, wo du die Tabelle <strong>posts <\/strong>siehst:<\/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=\"Die migrierte Beitragstabelle wird in phpMyAdmin angezeigt\" width=\"990\" height=\"315\"><figcaption class=\"wp-caption-text\">Die migrierte Beitragstabelle wird in phpMyAdmin angezeigt<\/figcaption><\/figure>\n<h3>Wie man Controller erstellt<\/h3>\n<p>Das Hinzuf\u00fcgen von Views und Controllern implementiert deine Gesch\u00e4ftslogik f\u00fcr den Datenbestand. Die Views sind die Benutzeroberfl\u00e4chen, die Datenobjekte aus dem Modell anzeigen. Controller steuern den Datenfluss zwischen dem Modell und den Views.<\/p>\n<ol start=\"1\">\n<li>Bevor du die Blade-Dateien erstellst, f\u00fchrst du in deinem Terminal den Befehl <code>npm install<\/code> aus, gefolgt von <code>npm run dev<\/code>. Mit dem ersten Befehl werden die erforderlichen npm-Pakete installiert. Mit dem zweiten Befehl wird ein Vite-Entwicklungsserver gestartet.<\/li>\n<li>Gehe in das Verzeichnis <strong>app\/Http\/Controllers<\/strong>, \u00f6ffne die Datei <strong>PostController.php<\/strong> und erstelle eine Controllermethode <code>index<\/code>. Die Controller-Methode gibt einen einfachen Text an den Browser aus. Dazu f\u00fcgst du den folgenden Code in die Klasse <code>PostController<\/code> ein:<\/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>Diese Methode \u00fcbergibt <code>$post<\/code> als Kontextvariable an den <code>views<\/code> Abschnitt des Index Blade Templates. <code>$post<\/code> enth\u00e4lt den anzuzeigenden Text, der hier lautet: &#8222;Laravel Tutorial Series One!&#8220; Du wirst dies sp\u00e4ter durch die Schleife durch die Beitr\u00e4ge ersetzen.<\/p>\n<ol start=\"3\">\n<li>Erstelle zwei neue Verzeichnisse im Verzeichnis<strong> resources\/views<\/strong>: <strong>layouts <\/strong>und <strong>posts<\/strong>.<\/li>\n<li>Im Verzeichnis <strong>layouts <\/strong>erstellst du eine Datei <strong>app.blade.php<\/strong>. Andere Blade-Dateien werden von dieser Datei erben.<\/li>\n<li>Kopiere diesen 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 -->\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>Wenn du diesen HTML-Code verwendest, importierst du Bootstrap Version 5.2.3 und Vite, um die JavaScript- und CSS-Assets zu b\u00fcndeln. Die generierte Seite hat eine Kopfzeile mit einer Navigationsleiste und eine Fu\u00dfzeile mit den darunter aufgerufenen Skripten. Im Body werden dynamische Inhalte aus anderen Blade-Dateien mit Hilfe von <code>@yield('content')<\/code> gerendert.<\/p>\n<p>Das Verzeichnis <strong>posts <\/strong>enth\u00e4lt die Blade-Dateien f\u00fcr die Implementierung von Erstellungs- und Lesevorg\u00e4ngen.<\/p>\n<ol start=\"6\">\n<li>Erstelle im <strong>posts-Verzeichnis <\/strong>eine Blade-Datei namens <strong>index.blade.php<\/strong> und f\u00fcge den folgenden Code ein:<\/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>Dieser Code stammt aus der Datei <strong>app.blade.php<\/strong> auf der Seite layouts. Bei der Darstellung im Browser werden der Inhalt jedes Blogbeitrags sowie die Navigationsleiste und die Fu\u00dfzeile angezeigt, die von der Datei <strong>app.blade.php <\/strong>im Ordner <strong>layouts<\/strong> \u00fcbernommen wurden. Zwischen den Abschnitts-Tags \u00fcbergibst du den Inhalt aus dem Controller, der im Browser angezeigt werden soll, wenn du die Anwendung ausf\u00fchrst.<\/p>\n<ol start=\"7\">\n<li>Lege die Route im Verzeichnis <strong>routes <\/strong>fest. Das Setzen der Route erm\u00f6glicht das automatische Laden durch die <code>RouteServiceProvider<\/code> im <strong>App\/Providers-Verzeichnis<\/strong>. <code>RouteServiceProvider<\/code> ist die Klasse, die f\u00fcr das Laden der Routedateien der Anwendung verantwortlich ist.<\/li>\n<li>In der Datei <strong>routes\/web.php<\/strong> importierst du den <strong>PostController <\/strong>mit <code>use AppHttpControllersPostController<\/code>.<\/li>\n<li>Dann f\u00fcgst du die Route <code>Route::resource('posts', PostController::class);<\/code> in die Datei <strong>routes\/web.php<\/strong> ein.<\/li>\n<li>W\u00e4hrend der Vite-Entwicklungsserver noch l\u00e4uft, benutze <code>php artisan serve<\/code>, um die Anwendung in deinem Terminal auszuf\u00fchren.<\/li>\n<li>\u00d6ffne mit deinem Browser <code>http:\/\/127.0.0.1:8000\/posts<\/code>, um deine neue Blogpost-Liste zu sehen.<\/li>\n<\/ol>\n<p>Die Seite sollte wie die folgende aussehen:<\/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=\"Die Blog-Anwendung wird im Browser angezeigt\" width=\"1280\" height=\"267\"><figcaption class=\"wp-caption-text\">Die Blog-Anwendung wird im Browser angezeigt<\/figcaption><\/figure>\n<p>Im n\u00e4chsten Abschnitt definieren wir die Controller-Methoden f\u00fcr die Anzeige aller Beitr\u00e4ge, die Erstellung eines Beitrags und die Speicherung eines Beitrags. Dann f\u00fcgen wir die entsprechenden Routen hinzu und erstellen die Blade-Dateien in den entsprechenden Abschnitten.<\/p>\n<h2>Die Blogpost-Seite erstellen<\/h2>\n<p>Erstelle Blogbeitr\u00e4ge, indem du einen Titel eingibst, eine Beschreibung hinzuf\u00fcgst und ein Bild hochl\u00e4dst. Dann zeigst du deine Beitr\u00e4ge in der richtigen Reihenfolge an.<\/p>\n<ol start=\"1\">\n<li>\u00d6ffne im Verzeichnis <strong>app\/Models<\/strong> die Datei <strong>Post.php<\/strong>.<\/li>\n<li>F\u00fcge in der Klasse <code>Post<\/code> unterhalb des Codeblocks <code>use HasFactory;<\/code> <code>protected $fillable = ['title', 'description', 'image'];<\/code> hinzu.<\/li>\n<\/ol>\n<p>Dieser Code sch\u00fctzt deine Modellattribute vor Massenzuweisungen.<\/p>\n<ol start=\"3\">\n<li>Importiere in deiner Datei <strong>app\/Http\/Controllers\/PostController.php<\/strong> das Modell <code>Post<\/code> mit <code>use AppModelsPost;<\/code>.<\/li>\n<li>Ersetze die Controller-Methoden <code>index<\/code> und <code>create<\/code>, die du zuvor in der Klasse <code>PostController<\/code> erstellt hast, durch den folgenden 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 der <code>index<\/code> Methode, die du gerade erstellt hast, ruft die PHP-Anwendung alle Beitr\u00e4ge ab, ordnet sie in chronologischer Reihenfolge und speichert sie dann in einer <code>posts<\/code> Variablen. In der R\u00fcckgabeansicht gehen die Beitr\u00e4ge als Kontextvariable in die Datei <strong>index.blade.php<\/strong> im Verzeichnis <strong>views\/posts<\/strong> ein. Die Methode <code>create<\/code> gibt eine <strong>create.blade.php<\/strong>-Datei zur\u00fcck und legt sie im Verzeichnis <strong>views\/posts<\/strong> ab, wenn ein Nutzer versucht, einen neuen Beitrag zu erstellen.<\/p>\n<ol start=\"5\">\n<li>Erstelle eine <code>store<\/code> Controller-Methode mit dem unten stehenden Code (um Blogbeitr\u00e4ge in der Datenbank zu speichern). F\u00fcge diesen Code in die Klasse <code>PostController<\/code> unter den Controllermethoden <code>index<\/code> und <code>create<\/code> ein.<\/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>Die Methode <code>store<\/code> bearbeitet Client-Anfragen zu den Daten in ihrem Body, daher erh\u00e4lt sie <code>request<\/code> als Argument. Als N\u00e4chstes validierst du die Felder, die bei der Erstellung eines Beitrags verwendet werden, und erstellst eine <code>post<\/code> Instanz aus dem <code>Post<\/code> Modell. Die eingegebenen Felddaten werden dann der erstellten Instanz zugewiesen und gespeichert. Die Seite leitet zur Ansicht <code>index<\/code> weiter und zeigt einen Flash-Text mit der Meldung &#8222;Beitrag erfolgreich erstellt&#8220;<\/p>\n<h3>Hinzuf\u00fcgen von Routen zu deinen Beitr\u00e4gen<\/h3>\n<p>So registrierst du die Routen in deiner Datei <strong>web.php<\/strong>:<\/p>\n<ol start=\"1\">\n<li>\u00d6ffne im <strong>routes<\/strong>-Verzeichnis im Stammverzeichnis deines Projekts die Datei <strong>web.php<\/strong>.<\/li>\n<li>Registriere die Routen der Controller-Methoden, indem du den bestehenden Code durch den folgenden ersetzst:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;?php\n\nuse IlluminateSupportFacadesRoute;\nuse AppHttpControllersPostController;\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>Dieser Controller verwendet diese Routen, um deine Datenobjekte zu erstellen, zu speichern und anzuzeigen.<\/p>\n<h3>Blade-Dateien erstellen<\/h3>\n<p>Um die Ansichten zu erstellen, kehrst du zur Klasse <code>PostController<\/code> zur\u00fcck:<\/p>\n<ol start=\"1\">\n<li>Erstelle im Verzeichnis <strong>resources\/views\/posts<\/strong> eine Blade-Datei namens <strong>create.blade.php<\/strong> und f\u00fcge den folgenden Code hinzu:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">@extends('layouts.app')\n@section('content')\n&lt;div class=\"container\"&gt;\n  &lt;h1&gt;Add Post&lt;\/h1&gt;\n  &lt;section class=\"mt-3\"&gt;\n    &lt;form method=\"post\" action=\"{{ route('posts.store') }}\" enctype=\"multipart\/form-data\"&gt;\n      @csrf\n      <!-- Error message when data is not inputted -->\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 diesem Code erbt <strong>create.blade.php<\/strong> den Inhalt von <strong>app.blade.php<\/strong> im Verzeichnis <strong>layouts<\/strong> mit <code>@extends('layouts.app')<\/code>. Zu diesen Inhalten geh\u00f6ren eine Kopfzeile, eine Navigationsleiste und eine Fu\u00dfzeile. Nachdem du den Text <code>Add Post<\/code> im Tag <code>h1<\/code> hinzugef\u00fcgt hast, hast du mit der Methode <code>post<\/code> ein Formular erstellt, das die Aktion <code>{{route('posts.store')}}<\/code> enth\u00e4lt.<\/p>\n<p>Der Code <code>enctype=\"multipart\/form-data\"<\/code> erm\u00f6glicht das Hochladen von Bildern, und <code>csrf<\/code> sch\u00fctzt dein Formular vor Cross-Site-Attacken. Dann zeigen die Fehlermeldungen ung\u00fcltige Feldeintr\u00e4ge an und verwenden<code>field attributes<\/code>, um Beschriftungen und Eingaben f\u00fcr das Formular zu erstellen.<\/p>\n<ol start=\"2\">\n<li>Ersetze nun den Code in der Datei <strong>index.blade.php<\/strong> durch den folgenden Code, um alle Blogbeitr\u00e4ge anzuzeigen:<\/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  <!-- Message if a post is posted successfully -->\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>Dieser Code f\u00fcgt eine Schaltfl\u00e4che <strong>Beitrag hinzuf\u00fcgen<\/strong>\u00a0ein. Wenn du darauf klickst, wird ein Beitrag erstellt und alle Daten werden in den Body der Seite \u00fcbertragen. Die Bedingung <code>if<\/code> pr\u00fcft, ob Daten in der Datenbank vorhanden sind. Wenn Daten vorhanden sind, wird die Bedingung erf\u00fcllt. Wenn nicht, wird &#8222;Kein Beitrag gefunden&#8220; angezeigt<\/p>\n<h3>Strukturiere deine Seiten<\/h3>\n<p>Jetzt kannst du deine Anwendung mit <code>php artisan serve<\/code> ausf\u00fchren, um Blogbeitr\u00e4ge zu erstellen und anzuzeigen. \u00d6ffne <code>&lt;a href=\"http:\/\/127.0.0.1:8000\"&gt;http:\/\/127.0.0.1:8000&lt;\/a &gt;<\/code>, und die Seite sollte wie folgt aussehen:<\/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=\"Die Blog-Anwendung erscheint im Browser\" width=\"1343\" height=\"350\"><figcaption class=\"wp-caption-text\">Die Blog-Anwendung erscheint im Browser<\/figcaption><\/figure>\n<p>Wenn du einen Beitrag hinzuf\u00fcgst, sieht er wie folgt aus:<\/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=\"Die Blog-Anwendung zeigt einen Beitrag im Browser an\" width=\"1359\" height=\"641\"><figcaption class=\"wp-caption-text\">Die Blog-Anwendung zeigt einen Beitrag im Browser an<\/figcaption><\/figure>\n<h2>Dein Laravel-Blog bei Kinsta bereitstellen<\/h2>\n<p>Du kannst deine Laravel-Anwendung mit dem <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Anwendungs-Hosting Service von Kinsta<\/a> bereitstellen und testen:<\/p>\n<ol start=\"1\">\n<li>Erstelle eine <strong>.htaccess<\/strong>-Datei.<\/li>\n<li>Pushe den Code in ein Repository.<\/li>\n<li>Erstelle eine Datenbank.<\/li>\n<li>Richte ein Projekt auf MyKinsta ein.<\/li>\n<li>Erstelle deinen Blog und stelle ihn bereit.<\/li>\n<\/ol>\n<h3>Erstelle eine .htaccess-Datei<\/h3>\n<p>Erstelle im Stammordner deines Projekts eine Datei namens <strong>.htaccess<\/strong> und f\u00fcge den folgenden Code hinzu:<\/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>Dieser Code leitet deine Anwendungsanfragen im Deployment auf <strong>public\/index.php<\/strong> um.<\/p>\n<h3>Pushe deinen Code in ein Repository<\/h3>\n<p>Erstelle ein Repository f\u00fcr dein Projekt und ver\u00f6ffentliche den Code. Du kannst GitHub, GitLab oder Bitbucket verwenden, um deinen Code zu hosten und ihn auf <a href=\"https:\/\/my.kinsta.com\/login?lang=de\">MyKinsta<\/a> zu ver\u00f6ffentlichen.<\/p>\n<h3>Richte die Datenbank in deinem MyKinsta-Dashboard ein<\/h3>\n<p>So erstellst du eine Datenbank auf MyKinsta:<\/p>\n<ol start=\"1\">\n<li>Klicke auf die Schaltfl\u00e4che <strong>Dienst hinzuf\u00fcgen<\/strong> und w\u00e4hle <strong>Datenbank<\/strong>.<\/li>\n<li>Gib die Details deiner Datenbank wie unten gezeigt ein. Beachte, dass du den <strong>Datenbank-Benutzernamen<\/strong> auf dem Standardwert belassen musst, damit dein Einsatz erfolgreich ist.<\/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=\"Erstellen einer Datenbank in MyKinsta\" width=\"1136\" height=\"739\"><figcaption class=\"wp-caption-text\">Erstellen einer Datenbank in MyKinsta<\/figcaption><\/figure>\n<p>Zu den Details geh\u00f6ren der <strong>Datenbankname<\/strong>, der <strong>Anzeigename<\/strong>, der <strong>Datenbanktyp, die<\/strong> <strong>Version<\/strong>, der <strong>Datenbankbenutzername<\/strong>, der <strong>Standort des Datenzentrums<\/strong> und die <strong>Gr\u00f6\u00dfe<\/strong>. In dieser Demonstration wird MariaDB als Datenbank verwendet, und die <strong>Gr\u00f6\u00dfe<\/strong> ist <strong>Db3 (1CPU \/ 4GB RAM \/ 10GB Festplattenspeicher 65 USD \/ Monat)<\/strong>. Du kannst den Datenbanktyp und die Gr\u00f6\u00dfe w\u00e4hlen, die deinen Bed\u00fcrfnissen entsprechen.<\/p>\n<ol start=\"3\">\n<li>Klicke auf <strong>Weiter<\/strong>.<\/li>\n<li>Best\u00e4tige deine monatlichen Kosten und deine Zahlungsmethode und klicke dann auf <strong>Datenbank erstellen<\/strong>.<\/li>\n<\/ol>\n<h3>Das Projekt auf MyKinsta einrichten<\/h3>\n<p>So stellst du deine Anwendung auf MyKinsta bereit:<\/p>\n<ol start=\"1\">\n<li>Klicke auf das <strong>Dashboard-Panel<\/strong>.<\/li>\n<li>Klicke auf <strong>Dienst hinzuf\u00fcgen<\/strong> und w\u00e4hle <strong>Anwendung<\/strong>, wie unten gezeigt:<\/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 beim Hinzuf\u00fcgen eines Anwendungsdienstes\" width=\"1399\" height=\"493\"><figcaption class=\"wp-caption-text\">MyKinsta-Dashboard beim Hinzuf\u00fcgen eines Anwendungsdienstes<\/figcaption><\/figure>\n<p>MyKinsta leitet dich auf die Seite <strong>Anwendung hinzuf\u00fcgen<\/strong> weiter.<\/p>\n<ol start=\"1\">\n<li>W\u00e4hle im Karten-Abschnitt <strong>Select branch<\/strong>\u00a0dein GitHub-Repository aus und aktiviere dann das Kontrollk\u00e4stchen <strong>Add deployment on commit<\/strong>.<\/li>\n<li>In den <strong>Grundlegenden Details<\/strong> gibst du den Anwendungsnamen ein und w\u00e4hlst den Standort des Rechenzentrums f\u00fcr deine Anwendung aus.<\/li>\n<li>Da Laravel bei der Bereitstellung einen App-Schl\u00fcssel ben\u00f6tigt, f\u00fcgst du in der Karte <strong>Umgebungsvariablen<\/strong> einen <strong>APP_KEY<\/strong> als Schl\u00fcssel 1 hinzu. Du kannst den <strong>APP_KEY<\/strong> verwenden, der in deiner lokalen <strong>.env<\/strong>-Datei definiert ist, oder einen <a href=\"https:\/\/generate-random.org\/laravel-key-generator?count=1\">Online-Laravel-Schl\u00fcsselgenerator<\/a> verwenden, um einen zu erhalten.<\/li>\n<li>Klicke auf <strong>Weiter<\/strong>.<\/li>\n<li>W\u00e4hle die Build-Ressourcen (CPU und RAM) f\u00fcr deine Anwendung. In dieser Demonstration wird die <strong>Standard-Build-Maschine (1CPU \/ 4 GB RAM)<\/strong> <strong>verwendet &#8211; 0,02USD \/ Minute<\/strong>.<\/li>\n<li>Lass das Optionsfeld <strong>Container-Image automatisch ein<\/strong> richten aktiviert.<\/li>\n<li>Klicke auf <strong>Weiter<\/strong>.<\/li>\n<li>Auf der Seite <strong>Prozesse einrichten<\/strong>\u00a0kannst du die Pod-Gr\u00f6\u00dfe und die Instanz deiner Anwendung \u00e4ndern, indem du diese K\u00e4stchen markierst. In dieser Demonstration werden die Standardwerte verwendet.<\/li>\n<li>Klicke auf <strong>Weiter<\/strong>.<\/li>\n<li>Klicke abschlie\u00dfend auf die Schaltfl\u00e4che <strong>Zahlungsmethode best\u00e4tigen<\/strong>, um die Bereitstellung deiner Anwendung zu starten. Wenn du auf diese Schaltfl\u00e4che klickst, gelangst du auch zur Seite <strong>Bereitstellungsdetails<\/strong>, auf der du den Fortschritt deiner Bereitstellung verfolgen kannst.<\/li>\n<\/ol>\n<h3>Erstellen und Bereitstellen deiner Anwendung<\/h3>\n<p>Nachdem die Datenbank und die Anwendung bereitgestellt wurden, verbindest du die Datenbank mit deiner Anwendung und erstellst sie, um sie bereitzustellen.<\/p>\n<p>Um die Datenbank zu verbinden, verwende die externen Verbindungen deiner gehosteten Datenbank. Auf der Registerkarte <strong>Info <\/strong>deiner gehosteten Datenbank siehst du <strong>externe Verbindungen<\/strong>, wie unten dargestellt:<\/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 Verbindungen f\u00fcr deine gehostete Datenbank\" width=\"1120\" height=\"498\"><figcaption class=\"wp-caption-text\">Externe Verbindungen f\u00fcr deine gehostete Datenbank<\/figcaption><\/figure>\n<ol start=\"1\">\n<li>Navigiere auf der Seite <strong>Einstellungen <\/strong>der bereitgestellten App zur Karte<strong> Umgebungsvariable<\/strong>.<\/li>\n<li>Klicke auf <strong>Umgebungsvariable hinzuf\u00fcgen<\/strong>, um die externen Verbindungen deiner gehosteten Datenbank mit dem entsprechenden Wert hinzuzuf\u00fcgen. Verwende die gleichen Variablen, die du in deiner <strong>.env<\/strong>-Datei hast.<\/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=\"Externe Verbindungen f\u00fcr deine gehostete Datenbank\" width=\"1107\" height=\"700\"><figcaption class=\"wp-caption-text\">Die Umgebungsvariablen f\u00fcr deine gehostete Datenbank<\/figcaption><\/figure>\n<p>Dieser Screenshot ist praktisch, wenn du die &lt;code&gt;env&lt;\/code&gt;-Variablen, die du manuell bearbeitet hast, markieren willst, um sie von den anderen zu unterscheiden.<\/p>\n<p>Die <strong>APP_URL <\/strong>ist die URL deiner gehosteten Anwendung, und <strong>DB_CONNECTION<\/strong> ist <code>mysql<\/code>.<\/p>\n<ol start=\"1\">\n<li>Gehe auf die Seite <strong>Einstellungen<\/strong> deiner Anwendung.<\/li>\n<li>In der Karte <strong>Buildpack <\/strong>f\u00fcgst du PHP und Node.js als Buildpacks hinzu. Da es sich um eine PHP-Anwendung handelt, musst du das PHP-Buildpack zuletzt hinzuf\u00fcgen.<\/li>\n<li>Klicke auf <strong>Deploy now<\/strong>, um deine Anwendung neu zu erstellen.<\/li>\n<\/ol>\n<p>Als n\u00e4chstes f\u00fcgst du einen Prozess hinzu, der die Datenbank migriert.<\/p>\n<ol start=\"1\">\n<li>Gehe auf die Registerkarte <strong>Prozesse <\/strong>auf der Seite deiner gehosteten Anwendung.<\/li>\n<li>W\u00e4hle <strong>Prozess erstellen<\/strong> auf der Karte <strong>Laufzeitprozesse<\/strong>.<\/li>\n<li>Gib <strong>Migration<\/strong> als Namen, <strong>Background Worker<\/strong> als Typ und <code>php artisan migrate --force<\/code> als Startbefehl ein. Du kannst die Podgr\u00f6\u00dfe und die Instanzen mit den Standardwerten belassen.<\/li>\n<li>W\u00e4hle <strong>Weiter<\/strong>, um den Prozess zu erstellen. Diese Aktion l\u00f6st einen neuen Build aus und setzt die Anwendung neu ein.<\/li>\n<li>Klicke auf der Registerkarte <strong>Domains <\/strong>auf den Link deiner Anwendung. Du kannst sehen, dass sie jetzt l\u00e4uft.<\/li>\n<li>Beachte, dass die auf MyKinsta bereitgestellte Blog-Anwendung keine Beitr\u00e4ge anzeigt. Erstelle einen neuen Beitrag, indem du den Titel eingibst, eine Beschreibung hinzuf\u00fcgst und ein Bild ausw\u00e4hlst.<\/li>\n<\/ol>\n<h2>Zusammenfassung<\/h2>\n<p>Mit Laravel ist es einfach, schnell einen einfachen Blog zu entwickeln. Der schnelle Seitenaufbau, die robuste Controller-Architektur und die kompetente Sicherheit machen es einfach, die Leistung einer Anwendung zu verbessern. Mit MyKinsta kannst du deine Webanwendungen schnell und effektiv ver\u00f6ffentlichen und bereitstellen. Das flexible Preismodell von MyKinsta basiert auf der Nutzung, sodass es keine versteckten Kosten gibt.<\/p>\n<p>Wenn Kinsta deine Laravel-Anwendung hostet, l\u00e4uft sie auf der <a href=\"https:\/\/kinsta.com\/de\/blog\/cloud-plattform-fuer-entwickler\/\">Google Cloud Platform im Premium-Tier<\/a>, damit sie so schnell wie m\u00f6glich ist. Kinsta bietet au\u00dferdem DDoS-Schutz und -Entsch\u00e4rfung auf Unternehmensebene mit Cloudflare sowie fortschrittliche Firewalls, um b\u00f6swillige Akteure in Schach zu halten und vieles mehr.<\/p>\n<p>Starte jetzt dein <a href=\"https:\/\/kinsta.com\/de\/anmelden\/?product_type=app-db\">kostenloses<\/a> Anwendungs-Hosting, um die Entwicklung und das Hosting deiner Webanwendungen zu optimieren!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel ist ein PHP-Framework f\u00fcr Webanwendungen mit einer ausdrucksstarken, eleganten Syntax. Es verf\u00fcgt \u00fcber eine umfangreiche Bibliothek von Paketen und nimmt dir einen Gro\u00dfteil der l\u00e4stigen &#8230;<\/p>\n","protected":false},"author":290,"featured_media":64600,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[958],"class_list":["post-64599","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>Wie man einen Blog in Laravel erstellt - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Diese Schritt-f\u00fcr-Schritt-Anleitung f\u00fchrt dich durch den gesamten Prozess, wie du einen Blog mit Laravel erstellst und ihn mit Kinsta online stellst.\" \/>\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\/de\/blog\/laravel-blog\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie man einen Blog in Laravel erstellt\" \/>\n<meta property=\"og:description\" content=\"Diese Schritt-f\u00fcr-Schritt-Anleitung f\u00fchrt dich durch den gesamten Prozess, wie du einen Blog mit Laravel erstellst und ihn mit Kinsta online stellst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-04T07:23:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-14T08:10:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/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=\"Diese Schritt-f\u00fcr-Schritt-Anleitung f\u00fchrt dich durch den gesamten Prozess, wie du einen Blog mit Laravel erstellst und ihn mit Kinsta online stellst.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcia Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"16\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/\"},\"author\":{\"name\":\"Marcia Ramos\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\"},\"headline\":\"Wie man einen Blog in Laravel erstellt\",\"datePublished\":\"2023-08-04T07:23:31+00:00\",\"dateModified\":\"2023-08-14T08:10:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/\"},\"wordCount\":2652,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/\",\"name\":\"Wie man einen Blog in Laravel erstellt - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg\",\"datePublished\":\"2023-08-04T07:23:31+00:00\",\"dateModified\":\"2023-08-14T08:10:35+00:00\",\"description\":\"Diese Schritt-f\u00fcr-Schritt-Anleitung f\u00fchrt dich durch den gesamten Prozess, wie du einen Blog mit Laravel erstellst und ihn mit Kinsta online stellst.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wie man einen Blog in Laravel erstellt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"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\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\",\"name\":\"Marcia Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/marciaramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Wie man einen Blog in Laravel erstellt - Kinsta\u00ae","description":"Diese Schritt-f\u00fcr-Schritt-Anleitung f\u00fchrt dich durch den gesamten Prozess, wie du einen Blog mit Laravel erstellst und ihn mit Kinsta online stellst.","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\/de\/blog\/laravel-blog\/","og_locale":"de_DE","og_type":"article","og_title":"Wie man einen Blog in Laravel erstellt","og_description":"Diese Schritt-f\u00fcr-Schritt-Anleitung f\u00fchrt dich durch den gesamten Prozess, wie du einen Blog mit Laravel erstellst und ihn mit Kinsta online stellst.","og_url":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-08-04T07:23:31+00:00","article_modified_time":"2023-08-14T08:10:35+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg","type":"image\/jpeg"}],"author":"Marcia Ramos","twitter_card":"summary_large_image","twitter_description":"Diese Schritt-f\u00fcr-Schritt-Anleitung f\u00fchrt dich durch den gesamten Prozess, wie du einen Blog mit Laravel erstellst und ihn mit Kinsta online stellst.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Marcia Ramos","Gesch\u00e4tzte Lesezeit":"16\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/"},"author":{"name":"Marcia Ramos","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116"},"headline":"Wie man einen Blog in Laravel erstellt","datePublished":"2023-08-04T07:23:31+00:00","dateModified":"2023-08-14T08:10:35+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/"},"wordCount":2652,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/","url":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/","name":"Wie man einen Blog in Laravel erstellt - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg","datePublished":"2023-08-04T07:23:31+00:00","dateModified":"2023-08-14T08:10:35+00:00","description":"Diese Schritt-f\u00fcr-Schritt-Anleitung f\u00fchrt dich durch den gesamten Prozess, wie du einen Blog mit Laravel erstellst und ihn mit Kinsta online stellst.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/laravel-blog\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-blog.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/de\/thema\/laravel\/"},{"@type":"ListItem","position":3,"name":"Wie man einen Blog in Laravel erstellt"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","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\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116","name":"Marcia Ramos","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/marciaramos\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=64599"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64599\/revisions"}],"predecessor-version":[{"id":64801,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64599\/revisions\/64801"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64599\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/64600"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=64599"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=64599"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=64599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}