Heim >Backend-Entwicklung >PHP-Tutorial >Tutorial-Beispiel zum Erstellen eines Blogs in Laravel

Tutorial-Beispiel zum Erstellen eines Blogs in Laravel

黄舟
黄舟Original
2018-05-16 11:14:562911Durchsuche

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zur Verwendung von Laravel zum Erstellen eines Mini-Blogs ein. Die schrittweisen Implementierungsschritte werden anhand von Beispielcodes detailliert vorgestellt. Es hat einen gewissen Referenz- und Lernwert für alle, die es benötigen Lass es uns mit dem untenstehenden Editor lernen.

Dieser Artikel stellt Ihnen hauptsächlich die relevanten Inhalte zur Verwendung von Laravel zum Erstellen eines Mini-Blogs vor. Ich werde im Folgenden nicht viel sagen, werfen wir einen Blick auf die detaillierte Einführung:

1. Design und Ideen

Bevor wir mit dem Schreiben der ersten Codezeile beginnen, müssen wir unser Bestes geben, um das zu entwerfen Das Produkt, das wir von Anfang bis Ende erstellen möchten, sollten Sie vermeiden, es erneut zu schreiben und zu überarbeiten und noch mehr unnötigen Code zu schreiben.

  • Anforderungsanalyse: Unser Mini-Blog sollte mindestens Folgendes umfassen: Artikel hinzufügen/bearbeiten/anzeigen/löschen und Funktionen zur Anzeige von Artikellisten.

  • Datenbankanalyse: Basierend auf dieser Funktion benötigen wir nur eine Artikeldatentabelle zum Speichern von Artikeln.

  • Seitenstrukturanalyse: Die Vorlagenvererbung sollte verwendet werden, um eine grundlegende Vorlage zu erstellen, einschließlich: Kopfzeile/Artikelliste/Bodeninformationen

2. Routen erstellen

Um diesen Blog zu vervollständigen, benötigen Sie wahrscheinlich die folgenden Routen:

| |. -------- |. Zurück zur Artikellistenseite | Seite |. Artikel-Routing speichern |. Artikel-Routing bearbeiten | Speichern Sie es dann wieder in der Datenbank |. Artikel löschen |

Sie können sehen, dass es sich bei fast allen um Datenoperationsrouten für Artikel handelt : RESTful-Ressourcencontroller und Routing.

Öffnen Sie „routes.php“ und fügen Sie den folgenden Code hinzu:

Route::resource('articles', 'ArticlesController');

Mit nur einer Codezeile wie oben entspricht dies der Erstellung der folgenden 7 Routen, die alle benannt sind. Für das Routing können wir so etwas wie route('articles.show') verwenden.

Route::get('/articles', 'ArticlesController@index')->name('articles.index'); 
Route::get('/articles/{id}', 'ArticlesController@show')->name('articles.show'); 
Route::get('/articles/create', 'ArticlesController@create')->name('articles.create'); 
Route::post('/articles', 'ArticlesController@store')->name('articles.store'); 
Route::get('/articles/{id}/edit', 'ArticlesController@edit')->name('articles.edit'); 
Route::patch('/articles/{id}', 'ArticlesController@update')->name('articles.update'); 
Route::delete('/articles/{id}', 'ArticlesController@destroy')->name('articles.destroy');

3. Erstellen Sie einen Controller

Verwenden Sie Artisan, um einen Artikel-Controller zu erstellen:

php artisan make:controller ArticlesController

4. Erstellen Sie eine Basisansicht

resources/views/layouts/art.blade.php

Siehe Vorlagenindex. html

Neues Artikelformular

@extends('layouts.art')
@section('content')

 <form class="form-horizontal" method="post" action="{{route(&#39;blog.store&#39;)}}">
   {{ csrf_field() }}
 <p class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">标题</label>
 <p class="col-sm-8">
  <input type="title" class="form-control" id="title" name="title">
 </p>
 </p>

 <p class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">内容</label>
 <p class="col-sm-8">
  <textarea class="form-control" rows="5" id="content" name="content"></textarea>
 </p>
 </p>

 <p class="form-group">
 <p class="col-sm-offset-2 col-sm-10">
  <button type="submit" class="btn btn-default">创建</button>
 </p>
 </p>
</form> 
@endsection

6 🎜 >
Wenn Sie zu diesem Zeitpunkt das neue Artikelformular ausfüllen und auf „Senden“ klicken, wird eine leere Seite angezeigt. Derselbe Grund ist wahr, da unser nachfolgender Controller-Code nicht geschrieben wurde noch.

Um die Artikelspeicherung zu implementieren, müssen Sie zunächst die Datenbank konfigurieren, Datentabellen erstellen, Modelle erstellen und dann den Speicherlogikcode vervollständigen.

1. Datenbank konfigurieren


.env-Datei ändern

2. Datentabelle erstellen


Verwenden Sie den artisan-Befehl, um die Migration zu generieren:

Migrationsdatei ändern
php artisan make:migration create_articles_talbe --create=articles

Wir haben eine Artikeltabelle erstellt, einschließlich inkrementellem ID-Feld und String-Titelfeld sowie Langtext Inhaltsfeld und Zeitstempel.
public function up() 
 {
  Schema::create(&#39;articles&#39;, function (Blueprint $table) {
   $table->increments(&#39;id&#39;);
   $table->string(&#39;title&#39;);
   $table->longText(&#39;content&#39;);
   $table->timestamps();
  });
 }
public function down() 
 {
  Schema::dropIfExists(&#39;articles&#39;);
 }

Datenbankmigration durchführen:

Melden Sie sich bei MySQL an und sehen Sie sich die Datentabelle an.
php artisan migrate

3. Erstellen Sie ein Modell


Verwenden Sie den Befehl „Artisan“, um ein Modell zu erstellen:

Öffnen Sie die Modelldatei und geben Sie ein der folgende Code:
php artisan make:model Article

app/Article.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model 
{
 //对应的表
 protected $table = &#39;articles&#39;;
 //通过model可以写入的字段
 protected $fillable = [
  &#39;title&#39;, &#39;content&#39;,
 ];
}
4. Speicherlogikcode


Öffnen Sie den Controller ArticlesController.php und finden Sie die Methode store().

app/Http/Controllers/ArticlesController.php

Überprüfungsfehleranzeige
 public function store(Request $request)
 {
  //数据验证 错误处理
  $this->validate($request,[
   &#39;title&#39;=>&#39;required|max:50&#39;,
   &#39;content&#39;=>&#39;required|max:500&#39;,
   ]);
  // 1 orm方式写入
  $article = Article::create([
   &#39;title&#39;=>$request->title,
   &#39;content&#39;=>$request->content,
   ]);
  //2 或者
  /* $article = new Article();
   $article->title =$request->title;
   $article->content = $request->content;
   $article->save();*/

   //3 db方式写入
   //insert()方法返回值为true 和 false
   //$res = DB::table(&#39;articles&#39;)->insert([&#39;title&#39;=>$request->title,&#39;content&#39;=>$request->content]);
  return redirect()->route(&#39;blog.index&#39;);
 }

@if (count($errors) > 0)
 <p class="alert alert-danger">
  <ul>
   @foreach($errors->all() as $error)
   <li>{{ $error }}</li>
   @endforeach
  </ul>
 </p>
@endif

7. Artikellistenanzeige
Nach Abschluss der Funktion zum Hinzufügen von Artikeln können wir unsere Artikellisten-Anzeigeseite implementieren.

Öffnen Sie ArticlesController.php und suchen Sie die Methode

. Fügen Sie den Code wie folgt hinzu:

index() app/Http/Controllers/ArticlesController.php

Index anzeigen .blade.php
use App\Article;

public function index() 
 {
  $articles = Article::orderBy(&#39;created_at&#39;,&#39;asc&#39;)->get();

  return view(&#39;articles.index&#39;, [&#39;articles&#39;=>$articles]);
 }

@extends(&#39;layouts.art&#39;)
@section(&#39;content&#39;)

 <a class="btn btn-primary" href="{{route(&#39;blog.create&#39;)}}" rel="external nofollow" >添加文章</a>


 @foreach($articles as $article)
 <p class="panel panel-default">
 <p class="panel-body">
 {{$article->title}}
 <a href="{{route(&#39;blog.show&#39;,$article->id)}}" rel="external nofollow" class="btn btn-info">阅读</a>
 <a href="{{route(&#39;blog.edit&#39;, $article->id)}}" rel="external nofollow" class="btn btn-info">修改</a>

  <form action="{{ route(&#39;blog.destroy&#39;, $article->id) }}" method="post" style="display: inline-block;">
   {{ csrf_field() }}
   {{ method_field(&#39;DELETE&#39;) }}
   <button type="submit" class="btn btn-danger">删除</button>
  </form>
 </p>
 </p>
 @endforeach

 {!! $articles->render() !!}
 @endsection

8. Formular zum Bearbeiten von Artikeln
Das Formular zum Bearbeiten von Artikeln ist dem neuen tatsächlich sehr ähnlich Artikelformular zuvor erstellt, außer Zusätzliche vorhandene Daten müssen ausgelesen und auf dem Formular ausgefüllt werden.

Zuerst fügen wir jedem Artikel auf der Artikellistenseite eine Schaltfläche zum Bearbeiten hinzu:

Ansicht:

Achten Sie auf das
@extends(&#39;layouts.art&#39;)
@section(&#39;content&#39;)

 <form class="form-horizontal" method="post" action="{{route(&#39;blog.update&#39;,$article->id)}}">
   {{ csrf_field() }}
  {{ method_field(&#39;PATCH&#39;) }}
 <p class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">标题</label>
 <p class="col-sm-10">
  <input type="title" class="form-control" id="title" name="title" value="{{ $article->title }}">
 </p>
 </p>


 <p class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">内容</label>
 <p class="col-sm-10">
  <textarea class="form-control" rows="5" id="content" name="content"> {{ $article->content }}</textarea>
 </p>
 </p>


 <p class="form-group">
 <p class="col-sm-offset-2 col-sm-10">
  <button type="submit" class="btn btn-default">修改</button>
 </p>
 </p>
</form> 
@endsection
in diesem Code, der Es handelt sich um eine seitenübergreifende Methodenfälschung und das HTML-Formular unterstützt die Aktionen PUT, PATCH oder DELETE nicht. Wenn Sie also die definierte PUT-, PATCH- oder DELETE-Route aus einem HTML-Formular aufrufen, müssen Sie dem Formular ein verstecktes _method-Feld hinzufügen, um die Methode zu fälschen. Weitere Informationen finden Sie in der offiziellen Dokumentation.

{{ method_field('PATCH') }} Controller

//展示修改模板
public function edit($id) 
 {
  $article = Article::findOrFail($id);
  return view(&#39;art.edit&#39;,[&#39;article&#39;=>$article]);
 }
//执行修改
public function update(Request $request, $id) 
 {
  $this->validate($request, [
   &#39;title&#39; => &#39;required|max:50&#39;,
   &#39;content&#39;=>&#39;required|max:500&#39;,
  ]);

  $article = Article::findOrFail($id);
  $article->update([
   &#39;title&#39; => $request->title,
   &#39;content&#39; => $request->content,
  ]);

   return redirect()->route(&#39;blog.index&#39;);
 }

9. Artikel löschen
Löschen-Button

Controller:
 <form action="{{ route(&#39;blog.destroy&#39;, $article->id) }}" method="post" style="display: inline-block;">
   {{ csrf_field() }}
   {{ method_field(&#39;DELETE&#39;) }}
   <button type="submit" class="btn btn-danger">删除</button>
  </form>
public function destroy($id) 
 {
  $article = Article::findOrFail($id);
  $article->delete();
  return back();
 }

十、结语

本次实验通过一个很简单的迷你博客对 Laravel RESTful 资源控制器和路由,视图,orm进行了强化练习。

Das obige ist der detaillierte Inhalt vonTutorial-Beispiel zum Erstellen eines Blogs in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn