Laravel5.8 入门系列四,内容发布功能准备工作

在这一节,要讲的内容是添加一个内容发布的功能,实现网站内容的增删改查功能。在这之前,先要完成一些准备工作。

创建数据表

使用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的老王
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!