Laravel框架下的CMS项目

Laravel框架下的CMS项目其中有具体代码
摘要由CSDN通过智能技术生成

一、用户认证

1)快速建立注册登录功能

  1. 导入依赖包:composer require laravel/ui

  2. 安装部署认证组件:php artisan ui vue --auth

  3. 安装部署npm组件:npm install && npm run dev

  4. 命令执行后,自动创建相关视图及相关控制器

2)数据库配置

  1. 在.env中配置数据库数据

  2. 修改配置项到终端执行数据库迁移

3)效果演示

  1. 在浏览器中点击注册、登陆



2. 尝试注册

二、帖子和分类管理

1)创建模型和数据库迁徙文件

  1. Category是文章的分类。

执行命令:php artisan make:model Category -m

  1. Post是CMS中后台发布文章帖子。

执行命令:php artisan make:model Post -m

  1. 两张表结构
    ①categories_table
<?php

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

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

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

②posts_table

<?php

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

class CreatePostsTable extends Migration
{
   
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
   
        Schema::create('posts', function (Blueprint $table) {
   
            $table->id();
            $table->string('title');
            $table->string('description');
            $table->text('content');
            $table->string('image');
            $table->dateTime('published_at')->nullable();
            $table->unsignedBigInteger('category_id');
            $table->foreign('category_id')->references('id')->on('categories')
                ->onUpdate('cascade')->onDelete('cascade');
            $table->timestamps();
        });
    }

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

  1. 迁移文件

执行命令:php artisan migrate

2)创建分类资源

  1. 创建控制器(CategoriesController举例)

执行命令:php artisan make:controller CategoriesController --resource

  1. 对应路由

Route::resource(‘categories’,‘CategoriesController’);

三、控制器

1)Category.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
   
    protected $fillable = [ //保护主键
        'name'
    ];
}

2)phpPost.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
   
        public function category(){
   
            //belongsTo,第一个参数:外键表,第二个:当前表的外键,第三个:外渐表的主键。可以让文章表引入分类表参数
            return $this->belongsTo('App\Category','category_id','id');
        }

        protected $fillable = [
        'title','description','content','category_id','published_at'
    ];
}

3)分类控制器:CategoriesController.php

<?php

namespace App\Http\Controllers;

use App\Category;
use App\Http\Requests\Category\StoreCategory;
use App\Http\Requests\Category\UpdateCategory;
use Exception;
use http\Env\Response;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Illuminate\View\View;

class CategoriesController extends Controller
{
   
    /**
     * Display a listing of the resource.
     *
     * @return Factory|View
     */
    public function index()
    {
   
        $categories = Category::query()->orderByDesc('created_at')->get();

        return view('categories.index',compact('categories'));
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return Factory|View
     */
    public function create()
    {
   
        return view('categories.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param StoreCategory $request
     * @return RedirectResponse|Redirector
     */
    public function store(StoreCategory $request)
    {
   
        $validatedDate = $request->validated();
        Category::create($validatedDate);
//        Category::create(['name' => $request->get('name')]);
        $request->session()->flash('success','创建成功!');
        return redirect(route('categories.index'));
    }

    /**
     * Display the specified resource.
     *
     * @param int $id
     * @return void
     */
    public function show($id)
    {
   
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param Category $category
     * @return Factory|View
     */
    public function edit(Category $category)
    {
   
        return view(  'categories.create',compact ('category'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param UpdateCategory $request
     * @param Category $category
     * @return RedirectResponse|Redirector
     */
    public function update(UpdateCategory $request, Category $category)
    {
   
        $category->update($request ->validated());
        session()->flash('success','更新成功!');
        return redirect(route('categories.index'));
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param Category $category
     * @return RedirectResponse|Redirector
     * @throws Exception
     */
    public function destroy(Category $category)
    {
   
        $category->delete();
        session()->flash('success','删除成功!');
        return redirect(route('categories.index'));
    }
}

4)Posts控制器:PostsController.php

<?php

namespace App\Http\Controllers;

use App\Category;
use App\Post;
use App\posts;
use App\Todo;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\Storage;
use Illuminate\View\View;

class PostsController extends Controller
{
   
    /**
     * Display a listing of the resource.
     *
     * @return Factory|View
     */
    public function index()
    {
   
        $posts = Post::query()->orderByDesc('created_at')->get();
        return view('posts.index',compact('posts'));
    }

    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值