Heim > Artikel > Backend-Entwicklung > Schreiben Sie einen kleinen Blog mit dem Laravel-Framework
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');
Nur eine Codezeile wie oben ist gleichwertig zum Erstellen Die folgenden 7 Routen sind alle benannte Routen. Wir können 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 Handwerker, um einen Artikel zu erstellen Steuergerät:
php artisan make:controller ArticlesController
4. Erstellen Sie eine Basisansicht
Ressourcen/ Ansichten/Layouts/art.blade.php
Siehe Vorlagenindex.html
Neues Artikelformular
@extends('layouts.art') @section('content') <form class="form-horizontal" method="post" action="{{route('blog.store')}}"> {{ 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. Artikelspeicherung
Wenn Sie das neue Artikelformular ausfüllen Klicken Sie zu diesem Zeitpunkt auf „Senden“. Aus demselben Grund wird auch eine leere Seite angezeigt, da unser nachfolgender Controller-Code noch nicht geschrieben wurde.
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 handwerklichen Befehl, um die Migration zu generieren:
php artisan make:migration create_articles_talbe --create=articles
Migrationsdatei ändern
public function up() { Schema::create('articles', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->longText('content'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('articles'); }
Wir haben eine Artikeltabelle erstellt, die ein inkrementelles ID-Feld, ein String-Titelfeld, ein Langtext-Inhaltsfeld und einen Zeitstempel enthält.
Datenbankmigration ausführen:
php artisan migrate
Melden Sie sich bei MySQL an und sehen Sie sich die Datentabelle an.
3. Erstellen Sie ein Modell
Verwenden Sie den Handwerkerbefehl, um ein Modell zu erstellen:
php artisan make:model Article
Modelldatei öffnen, folgenden Code eingeben:
app/Article.php
namespace App; use Illuminate\Database\Eloquent\Model; class Article extends Model { //对应的表 protected $table = 'articles'; //通过model可以写入的字段 protected $fillable = [ 'title', 'content', ]; }
4. Logikcode speichern
Öffnen Sie den Controller ArticlesController.php und suchen Sie die Methode store().
app/Http/Controllers/ArticlesController.php
public function store(Request $request) { //数据验证 错误处理 $this->validate($request,[ 'title'=>'required|max:50', 'content'=>'required|max:500', ]); // 1 orm方式写入 $article = Article::create([ 'title'=>$request->title, 'content'=>$request->content, ]); //2 或者 /* $article = new Article(); $article->title =$request->title; $article->content = $request->content; $article->save();*/ //3 db方式写入 //insert()方法返回值为true 和 false //$res = DB::table('articles')->insert(['title'=>$request->title,'content'=>$request->content]); return redirect()->route('blog.index'); }
Validierungsfehler angezeigt
@if (count($errors) > 0) <p class="alert alert-danger"> <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </p> @endif
7. Anzeige der Artikelliste
Nachdem wir die Funktion zum Hinzufügen von Artikeln abgeschlossen haben, können wir unsere Seite zur Anzeige der Artikelliste implementieren.
Öffnen Sie ArticlesController.php und suchen Sie die Methode index()
. Fügen Sie den Code wie folgt hinzu:
app/Http/Controllers/ArticlesController.php
use App\Article; public function index() { $articles = Article::orderBy('created_at','asc')->get(); return view('articles.index', ['articles'=>$articles]); }
index.blade.php anzeigen
@extends('layouts.art') @section('content') <a class="btn btn-primary" href="{{route('blog.create')}}" rel="external nofollow" >添加文章</a> @foreach($articles as $article) <p class="panel panel-default"> <p class="panel-body"> {{$article->title}} <a href="{{route('blog.show',$article->id)}}" rel="external nofollow" class="btn btn-info">阅读</a> <a href="{{route('blog.edit', $article->id)}}" rel="external nofollow" class="btn btn-info">修改</a> <form action="{{ route('blog.destroy', $article->id) }}" method="post" style="display: inline-block;"> {{ csrf_field() }} {{ method_field('DELETE') }} <button type="submit" class="btn btn-danger">删除</button> </form> </p> </p> @endforeach {!! $articles->render() !!} @endsection
Artikelformular bearbeiten
Das Formular „Artikel bearbeiten“ ist eigentlich dem zuvor erstellten Formular „Neuer Artikel“ sehr ähnlich, mit der Ausnahme, dass die vorhandenen Daten ausgelesen und in das Formular eingetragen werden müssen.
Zuerst fügen wir jedem Artikel auf der Artikellistenseite eine Schaltfläche zum Bearbeiten hinzu:
Ansicht:
@extends('layouts.art') @section('content') <form class="form-horizontal" method="post" action="{{route('blog.update',$article->id)}}"> {{ csrf_field() }} {{ method_field('PATCH') }} <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
注意这段代码中的 {{ method_field('PATCH') }}
,这是跨站方法伪造,HTML 表单没有支持 PUT、PATCH 或 DELETE 动作。所以在从 HTML 表单中调用被定义的 PUT、PATCH 或 DELETE 路由时,你将需要在表单中增加隐藏的 _method 字段来伪造该方法,详情参考 官方文档。
控制器
//展示修改模板 public function edit($id) { $article = Article::findOrFail($id); return view('art.edit',['article'=>$article]); } //执行修改 public function update(Request $request, $id) { $this->validate($request, [ 'title' => 'required|max:50', 'content'=>'required|max:500', ]); $article = Article::findOrFail($id); $article->update([ 'title' => $request->title, 'content' => $request->content, ]); return redirect()->route('blog.index'); }
九、删除文章
删除按钮
<form action="{{ route('blog.destroy', $article->id) }}" method="post" style="display: inline-block;"> {{ csrf_field() }} {{ method_field('DELETE') }} <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 vonSchreiben Sie einen kleinen Blog mit dem Laravel-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!