在這一節,要講的內容是新增一個內容釋出的功能,實現網站內容的增刪改查功能。在這之前,先要完成一些準備工作。
建立資料表
使用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 協議》,轉載必須註明作者和本文連結