国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - 利用laravel搭建一個迷你博客實戰(zhàn)教程

利用laravel搭建一個迷你博客實戰(zhàn)教程

2021-06-17 16:11范駿 PHP教程

這篇文章主要給大家介紹了關(guān)于利用laravel搭建一個迷你博客的相關(guān)資料,文中將一步步的實現(xiàn)步驟通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

本文主要給大家介紹的是關(guān)于利用laravel搭建一個迷你博客的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹:

一、設(shè)計與思路

在開始寫第一行代碼之前,一定要盡量從頭到尾將我們要做的產(chǎn)品設(shè)計好,避免寫完又改,多寫不必要的代碼。

  • 需求分析:我們的迷你博客應(yīng)該至少包含:新增/編輯/查看/刪除文章,以及文章列表展示功能。
  • 數(shù)據(jù)庫分析:基于這個功能,我們只需要一張 Articles 數(shù)據(jù)表來存放文章即可。
  • 頁面結(jié)構(gòu)分析:應(yīng)該使用模板繼承建立一張基礎(chǔ)模板包含:頭部/文章列表/底部信息

二、創(chuàng)建路由

完成這個博客大概需要以下幾條路由:

| 路由 | 功能 | | -------- | ---------------- | | 文章列表頁面路由 | 返回文章列表頁面 | | 新增文章頁面路由 | 返回新增文章頁面 | | 文章保存功能路由 | 將文章保存到數(shù)據(jù)庫 | | 查看文章頁面路由 | 返回文章詳情頁面 | | 編輯文章頁面路由 | 返回編輯文章頁面 | | 編輯文章功能路由 | 將文章取出更新后重新保存到數(shù)據(jù)庫 | | 刪除文章功能路由 | 將文章從數(shù)據(jù)庫刪除 |

可以看到幾乎全部是對文章的數(shù)據(jù)操作路由,針對這種情況,Laravel 提供了非常方便的辦法:RESTful 資源控制器和路由。

打開routes.php加入如下代碼:

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

只需要上面這樣一行代碼,就相當于創(chuàng)建了如下7條路由,且都是命名路由,我們可以使用類似route('articles.show') 這樣的用法。

?
1
2
3
4
5
6
7
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');

三、創(chuàng)建控制器

利用 artisan 創(chuàng)建一個文章控制器:

?
1
php artisan make:controller ArticlesController

四、創(chuàng)建基礎(chǔ)視圖

resources/views/layouts/art.blade.php

見模板index.html

五、新建文章表單

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@extends('layouts.art')
@section('content')
 
 <form class="form-horizontal" method="post" action="{{route('blog.store')}}">
   {{ csrf_field() }}
 <div class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">標題</label>
 <div class="col-sm-8">
  <input type="title" class="form-control" id="title" name="title">
 </div>
 </div>
 
 <div class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">內(nèi)容</label>
 <div class="col-sm-8">
  <textarea class="form-control" rows="5" id="content" name="content"></textarea>
 </div>
 </div>
 
 <div class="form-group">
 <div class="col-sm-offset-2 col-sm-10">
  <button type="submit" class="btn btn-default">創(chuàng)建</button>
 </div>
 </div>
</form>
@endsection

六、文章存儲

此時如果你填寫新建文章表單點擊提交也會跳到一個空白頁面,同樣的道理,因為我們后續(xù)的控制器代碼還沒寫。

要實現(xiàn)文章存儲,首先要配置數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)表,創(chuàng)建模型,然后再完成存儲邏輯代碼。

1、配置數(shù)據(jù)庫

修改.env文件

2、創(chuàng)建數(shù)據(jù)表

利用 artisan 命令生成遷移:

?
1
php artisan make:migration create_articles_talbe --create=articles

修改遷移文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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');
 }

我們創(chuàng)建了一張 articles 表,包含遞增的 id 字段,字符串title字段,長文本content字段,和時間戳。

執(zhí)行數(shù)據(jù)庫遷移:

?
1
php artisan migrate

登錄mysql,查看數(shù)據(jù)表。

3、創(chuàng)建模型

利用 artisan 命令創(chuàng)建模型:

?
1
php artisan make:model Article

打開模型文件,輸入以下代碼:

app/Article.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class Article extends Model
{
 //對應(yīng)的表
 protected $table = 'articles';
 //通過model可以寫入的字段
 protected $fillable = [
  'title', 'content',
 ];
}

4、存儲邏輯代碼

打開 ArticlesController.php 控制器,找到 store() 方法。

app/Http/Controllers/ArticlesController.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public function store(Request $request)
{
 //數(shù)據(jù)驗證 錯誤處理
 $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');
}

驗證錯誤顯示

?
1
2
3
4
5
6
7
8
9
@if (count($errors) > 0)
 <div class="alert alert-danger">
  <ul>
   @foreach($errors->all() as $error)
   <li>{{ $error }}</li>
   @endforeach
  </ul>
 </div>
@endif

七、文章列表展示

完成了添加文章功能后,就可以實現(xiàn)我們的文章列表展示頁了。

打開 ArticlesController.php 找到 index() 方法,添加代碼如下:

app/Http/Controllers/ArticlesController.php

?
1
2
3
4
5
6
7
8
use App\Article;
 
public function index()
 {
  $articles = Article::orderBy('created_at','asc')->get();
 
  return view('articles.index', ['articles'=>$articles]);
 }

視圖index.blade.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@extends('layouts.art')
@section('content')
 
 <a class="btn btn-primary" href="{{route('blog.create')}}" rel="external nofollow" >添加文章</a>
 
 
 @foreach($articles as $article)
 <div class="panel panel-default">
 <div 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>
 </div>
 </div>
 @endforeach
 
 {!! $articles->render() !!}
 @endsection

八、編輯文章表單

編輯文章表單其實和之前創(chuàng)建的新建文章表單很類似,只是需要額外將現(xiàn)有的數(shù)據(jù)讀取出來填在表單上。

首先我們在文章列表頁的每個文章上添加一個編輯按鈕:

視圖:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@extends('layouts.art')
@section('content')
 
 <form class="form-horizontal" method="post" action="{{route('blog.update',$article->id)}}">
   {{ csrf_field() }}
  {{ method_field('PATCH') }}
 <div class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">標題</label>
 <div class="col-sm-10">
  <input type="title" class="form-control" id="title" name="title" value="{{ $article->title }}">
 </div>
 </div>
 
 
 <div class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">內(nèi)容</label>
 <div class="col-sm-10">
  <textarea class="form-control" rows="5" id="content" name="content"> {{ $article->content }}</textarea>
 </div>
 </div>
 
 
 <div class="form-group">
 <div class="col-sm-offset-2 col-sm-10">
  <button type="submit" class="btn btn-default">修改</button>
 </div>
 </div>
</form>
@endsection

注意這段代碼中的 {{ method_field('PATCH') }} ,這是跨站方法偽造,HTML 表單沒有支持 PUT、PATCH 或 DELETE 動作。所以在從 HTML 表單中調(diào)用被定義的 PUT、PATCH 或 DELETE 路由時,你將需要在表單中增加隱藏的 _method 字段來偽造該方法,詳情參考 官方文檔。

控制器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//展示修改模板
public function edit($id)
 {
  $article = Article::findOrFail($id);
  return view('art.edit',['article'=>$article]);
 }
//執(zhí)行修改
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');
 }

九、刪除文章

刪除按鈕

?
1
2
3
4
5
<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>

控制器:

?
1
2
3
4
5
6
public function destroy($id)
 {
  $article = Article::findOrFail($id);
  $article->delete();
  return back();
 }

十、結(jié)語

本次實驗通過一個很簡單的迷你博客對 Laravel RESTful 資源控制器和路由,視圖,orm進行了強化練習(xí)。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。

原文鏈接:https://fjun.org/laravel-firstblog/

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲精品视频一区二区三区 | 中文字幕国产视频 | 亚洲综合区 | 精品无码久久久久久久动漫 | 天天干天天草 | 日日操av | 黄色一级视频在线观看 | 久久久亚洲国产天美传媒修理工 | 欧产日产国产一区 | 精品一区电影 | 99精品欧美一区二区三区综合在线 | 一区二区三区在线播放 | 免费一区 | 日韩欧美国产一区二区 | 天天操天天干天天爽 | 亚洲一区av在线 | 91在线影院| 精品在线播放 | 九九热在线视频 | 中文字幕亚洲一区二区三区 | 激情六月婷 | 亚洲成人精品 | 一区二区不卡视频 | 综合精品久久久 | 日本一区二区三区中文字幕 | 97久久精品人人做人人爽50路 | 91视频导航 | 成人a在线| 午夜羞羞视频 | 国产欧美日韩在线观看 | 日韩免费av一区二区 | 色视频在线免费观看 | 亚洲毛片网站 | 精品成人av| 欧美性猛片aaaaaaa做受 | 中文字幕亚洲一区二区三区 | 日本一区二区免费播放 | 国产免费一区二区三区 | 成人在线观看免费爱爱 | 欧美视频免费 | 91精品久久|