Laravel5.8 入門系列四,內容釋出功能準備工作

寫PHP的老王發表於2019-09-15

在這一節,要講的內容是新增一個內容釋出的功能,實現網站內容的增刪改查功能。在這之前,先要完成一些準備工作。

建立資料表

使用php artisan make:migration create_posts_table創意一個表遷移檔案/database/migrations/xxxx_create_posts_table.php,生成資料表posts的資料遷移內容如下:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

預設會新增一個主鍵id,以及時間戳(新增時間,更新時間)欄位。我們需要完善posts表的資料結構。修改up方法如下內容:

    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title')->comment('標題');
            $table->string('sub_content')->comment('摘要');
            $table->text('content')->comment('內容');
            $table->bigInteger('user_id')->comment('釋出人id');
            $table->timestamps();
        });
    }

在資料表中新增標題,摘要,內容,釋出人id欄位。

執行資料遷移命令php artisan migrate生成表結構。

建立必要的檔案

1. 建立模型

資料表已經建立了,我們還需要建立一個模型檔案,用來運算元據表posts。使用命令php artisan make:model Models\\Post建立資料模型。命令會在App目錄下建立Models資料夾,並在Models資料夾下建立Post.php檔案。

注意,預設情況下,資料表是模型的複數形式。如果你的模型於表名直接關係不符合這個關係,則需要在生成的模型檔案中新增$table屬性,顯示指定表名。

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $table = 'posts';
}
2. 建立控制器檔案

Laravel所有的控制都在App\Http\Controllers目錄下。我們可以把相同的功能控制器組織到一個資料夾下,資料夾推薦首字母大寫。

使用命令php artisan make:controller Front\\PostController將會在App\Http\Controllers目錄下建立Front目錄,並建立PostController.php檔案。我們用PostController.php實現資料的增刪改查功能。

PostController檔案中分別新增add,store,edit,save,destory,index,detail方法,分別代表顯示新增介面,儲存新增資料,顯示編輯介面,儲存編輯資料,刪除內容,顯示列表資料,顯示詳情資料 方法。

<?php

namespace App\Http\Controllers\Front;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class PostController extends Controller
{
    /**
     * 顯示新增介面
     */
    public function add(){
        return view('front.post.add');
    }

    /**
     * 儲存新增內容
     */
    public function store(){

    }

    /**
     * 顯示內容編輯介面
     */
    public function edit($id){
        return view('front.post.edit');
    }

    /**
     * 儲存編輯內容
     */
    public function save(){

    }

    /**
     * 刪除內容
     */
    public function destory($id){

    }

    /**
     * 顯示內容列表
     */
    public function index(){
        return view('front.post.index');
    }

    /**
     * 顯示內容詳情介面
     */
    public function detail($id){
        return view('front.post.index');
    }
}
3. 新增試圖介面

我們需要新增,編輯詳情列表四個試圖介面。一樣的,我們還是把相同功能的試圖檔案放在一個資料夾下。對於試圖檔案的建立,並沒有什麼命令,只能自己手動建立了。

resource/views目錄下建立front資料夾,在front問價夾下建立post資料夾。在post問價夾下建立index.blade.php,add.blade.php,edit.blade.php,detail.blade.php四個檔案,內容先不管。

路由檔案新增操作路由

為了訪問控制器提供的方法,我們需要在路由檔案routes/web.php中新增操作路由。將下列內容新增在web.php檔案最下方:

Route::get('/post/add','Front\PostController@add')->name('post.add');
Route::post('/post/store','Front\PostController@store')->name('post.store');
Route::get('/post/edit/{id}','Front\PostController@edit')->name('post.edit');
Route::post('/post/save','Front\PostController@save')->name('post.save');
Route::get('/post/detail/{id}','Front\PostController@detail')->name('post.detail');
Route::get('/post/index','Front\PostController@index')->name('post.index');
Route::post('/post/destory/{id}','Front\PostController@destory')->name('post.destory');

準備工作一切就緒,我們準備好了內容釋出功能增刪改查需要的整體骨架,接下來直接在對應的方法裡填上邏輯程式碼就可以了。現在,先訪問下列地址,驗證準備工作是否正確完成。

http://localhost:8000/post/index
http://localhost:8000/post/add
http://localhost:8000/post/edit/1
http://localhost:8000/post/detail/1

如果都顯示空白介面(因為我們試圖檔案上沒有任何內容),則說明一切正常。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
寫PHP的老王

相關文章