📜  用于平面文件 CMS 的 laravel Post 模型 - PHP (1)

📅  最后修改于: 2023-12-03 14:56:20.758000             🧑  作者: Mango

用于平面文件 CMS 的 Laravel Post 模型

简介

Laravel 是一个流行的 PHP 开发框架,提供了丰富的功能和良好的可扩展性。本文将介绍如何使用 Laravel 的模型来创建一个简单的平面文件 CMS。

准备工作

在开始之前,需要确保已经安装了最新版的 Laravel,并且熟悉基本的控制台命令和路由。

创建模型

首先,需要创建一个模型来代表文章(Post)。可以使用以下 Artisan 命令创建模型:

php artisan make:model Post

该命令将在 app 目录下创建一个名为 “Post” 的模型。

接下来,在 Post 模型中可以定义一些属性,例如 title、content 等。以下是一个示例模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = ['title', 'content'];
}
创建控制器

接下来需要创建一个控制器来处理与文章相关的请求。可以使用以下 Artisan 命令来创建控制器:

php artisan make:controller PostController --resource

该命令将会在 app/Http/Controllers 目录下创建一个名为 “PostController” 的控制器。

在该控制器中,可以定义若干个方法来处理不同的请求。例如,以下的控制器有 index、create、store、show、edit、update 和 destroy 方法:

<?php

namespace App\Http\Controllers;

use App\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::all();
        return view('posts.index', compact('posts'));
    }

    public function create()
    {
        return view('posts.create');
    }

    public function store(Request $request)
    {
        $post = Post::create($request->all());
        return redirect()->route('posts.show', $post->id);
    }

    public function show(Post $post)
    {
        return view('posts.show', compact('post'));
    }

    public function edit(Post $post)
    {
        return view('posts.edit', compact('post'));
    }

    public function update(Request $request, Post $post)
    {
        $post->update($request->all());
        return redirect()->route('posts.show', $post->id);
    }

    public function destroy(Post $post)
    {
        $post->delete();
        return redirect()->route('posts.index');
    }
}
创建视图

在完成控制器之后,可以创建视图文件来呈现文章内容和表单。

你可以在 resources/views/posts 目录下创建若干个视图文件,例如 index.blade.php、show.blade.php、create.blade.php 和 edit.blade.php。

以下是一个简单的 create.blade.php 文件:

@extends('layouts.app')

@section('content')
    <h1>Create New Post</h1>
    <form action="{{ route('posts.store') }}" method="POST">
        @csrf
        <div class="form-group">
            <label for="title">Title:</label>
            <input type="text" name="title" id="title" class="form-control" required>
        </div>
        <div class="form-group">
            <label for="content">Content:</label>
            <textarea name="content" id="content" class="form-control" rows="10" required></textarea>
        </div>
        <div class="form-group">
            <button type="submit" class="btn btn-primary">Create Post</button>
        </div>
    </form>
@endsection
添加路由

最后,需要为控制器添加路由。可以在 routes/web.php 文件中添加如下代码:

Route::resource('posts', 'PostController');

该路由将控制器中的不同方法映射到 HTTP 请求。

现在,访问 http://localhost:8000/posts 就可以看到文章列表了。

结论

在本文中,我们通过使用 Laravel 模型、控制器和视图来创建一个简单的平面文件 CMS。这仅仅是 Laravel 的众多功能之一,它还提供了更多高级的选项以满足更多需求。