Heim > Backend-Entwicklung > PHP-Tutorial > Erstellen Sie einen Mini-Blog in Laravel

Erstellen Sie einen Mini-Blog in Laravel

小云云
Freigeben: 2023-03-19 17:06:01
Original
1333 Leute haben es durchsucht

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zur Verwendung von Laravel zum Erstellen eines Mini-Blogs ein. Der Artikel stellt die schrittweisen Implementierungsschritte anhand von Beispielcodes vor. Er hat einen gewissen Referenz- und Lernwert Ich hoffe, es kann allen helfen.

1. Design und Ideen

Bevor wir mit dem Schreiben der ersten Codezeile beginnen, müssen wir unser Bestes geben, um das Produkt, das wir erstellen möchten, von Anfang bis Ende zu entwerfen um es nach dem Schreiben zu ändern. Schreiben Sie mehr unnötigen Code.

  • 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. Erstellen Routing

Die folgenden Routen werden wahrscheinlich benötigt, um diesen Blog zu vervollständigen:

| -------- |. - ------- Artikellisten-Routing | Zurück zur Artikel-Seitenroute |. Artikel-Funktionsroute bearbeiten | |.

Sie können sehen, dass es sich bei fast allen um Datenoperationsrouten für Artikel handelt. Für diese Situation bietet Laravel eine sehr praktische Methode: RESTful Resource Controller und Routing.

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

Route::resource('articles', 'ArticlesController');
Nach dem Login kopieren

Mit nur einer Codezeile oben entspricht dies der Erstellung der folgenden 7 Routen, die alle benannte Routen sind. 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');
Nach dem Login kopieren

3. Erstellen Sie einen Controller

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

php artisan make:controller ArticlesController
Nach dem Login kopieren

Erstellen Sie eine Grundansicht

resources/views/layouts/art.blade.php

Siehe Vorlage index.html

5. 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
Nach dem Login kopieren

6. Artikelspeicherung

Wenn Sie zu diesem Zeitpunkt das neue Artikelformular ausfüllen und auf „Senden“ klicken, wird eine leere Seite angezeigt. Der gleiche Grund gilt, da unser nachfolgender Controller Der Code wurde noch nicht geschrieben.

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
Nach dem Login kopieren

Ändern Sie die Migrationsdatei

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');
 }
Nach dem Login kopieren

Wir haben eine Artikeltabelle erstellt, die ein inkrementelles ID-Feld, ein Zeichenfolgentitelfeld, ein Langtextinhaltsfeld und einen Zeitstempel enthält.

Datenbankmigration durchführen:

php artisan migrate
Nach dem Login kopieren

Melden Sie sich bei MySQL an und sehen Sie sich die Datentabelle an.

3. Erstellen Sie ein Modell

Verwenden Sie den Befehl artisan, um ein Modell zu erstellen:

php artisan make:model Article
Nach dem Login kopieren

Öffnen Sie die Modelldatei und geben Sie den folgenden Code ein:

app/ Article.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model 
{
 //对应的表
 protected $table = 'articles';
 //通过model可以写入的字段
 protected $fillable = [
  'title', 'content',
 ];
}
Nach dem Login kopieren

4. Speicherlogikcode

Ö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');
 }
Nach dem Login kopieren

Überprüfungsfehleranzeige

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

7. Artikellistenanzeige

Nachdem wir die Funktion zum Hinzufügen von Artikeln abgeschlossen haben, können wir unsere Artikellisten-Anzeigeseite implementieren.

Öffnen Sie ArticlesController.php und suchen Sie die index()-Methode. Fügen Sie den folgenden Code 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]);
 }
Nach dem Login kopieren

Index anzeigen. blade.php

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

 <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('DELETE') }}
   <button type="submit" class="btn btn-danger">删除</button>
  </form>
 </p>
 </p>
 @endforeach

 {!! $articles->render() !!}
 @endsection
Nach dem Login kopieren

8. Formular „Artikel bearbeiten“

Das Formular „Artikel bearbeiten“ ist tatsächlich dem zuvor erstellten neuen Artikelformular sehr ähnlich. Es müssen lediglich die vorhandenen Daten gelesen werden und füllen Sie es im Formular aus.

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(&#39;blog.update&#39;,$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
Nach dem Login kopieren

Beachten Sie das {{ method_field(' PATCH') }} , dies ist eine Cross-Site-Methodenfälschung, HTML-Formulare unterstützen keine PUT-, PATCH- oder DELETE-Aktionen. 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.

Controller

//展示修改模板
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');
 }
Nach dem Login kopieren

9. Artikel löschen

Löschen-Button

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

Controller:

public function destroy($id) 
 {
  $article = Article::findOrFail($id);
  $article->delete();
  return back();
 }
Nach dem Login kopieren

10. Fazit

Dieses Experiment nutzte einen sehr einfachen Mini-Blog, um intensive Übungen zu Laravel RESTful Resource Controller, Routing, View und ORM durchzuführen.

Verwandte Empfehlungen:

Detailliertes Beispiel für die Vue+SpringBoot-Entwicklung der V-Tribe-Blog-Management-Plattform

LAMP implementiert den Aufbau persönlicher Blogs basierend auf PHP-Modul Ausführliche Erklärung mit Bildern und Text

Wie man mit PHP einen einfachen Blog erstellt

Das obige ist der detaillierte Inhalt vonErstellen Sie einen Mini-Blog in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage