laravel-admin实现文章管理

文章表
# 创建一个文章表
CREATE TABLE `cms_article` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标题',
  # 此处与上篇文章增加了一个分类id 可以手动增加数据库字段
  `class_id` int(10) NOT NULL COMMENT '分类ID',
  `author` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '作者',
  `article_content` longtext COLLATE utf8mb4_unicode_ci COMMENT '内容',
  `created_at` datetime DEFAULT NULL COMMENT '创建时间',
  `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章表';
文章分类表
# 创建一个文章分类表
CREATE TABLE `cms_class` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标题',
  `describe` longtext COLLATE utf8mb4_unicode_ci COMMENT '描述',
  `order` int(11) DEFAULT NULL COMMENT '排序',
  `created_at` datetime DEFAULT NULL COMMENT '创建时间',
  `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文章分类表';

之后按照上一篇文章 创建model 生成控制器即可

生成并修改结束后,将菜单配置完成即可显示如下效果

模型关联
  • app/Admin/Models/CmsArticle.php
<?php
namespace App\Admin\Models;
use Illuminate\Database\Eloquent\Model;
use Encore\Admin\Traits\DefaultDatetimeFormat;
use App\Admin\Models\CmsClass;
class CmsArticle extends Model
{
    //使用默认时间格式
    use DefaultDatetimeFormat;
    //此处填写表名
    protected $table = 'cms_article';
    // 通过 class_id 与 cms_class 的 id 进行关联
    public function CmsClass(){
        return $this->hasOne(CmsClass::class, 'id', 'class_id');
    }
}
修改gird 显示
  • app/Admin/Controllers/CmsArticleController.php
protected function grid()
    {
        $grid = new Grid(new CmsArticle());

        $grid->column('id', __('Id'));
        $grid->column('title', __('标题'));
        // 通过CmsClass.title 获取分类标题
        $grid->column('CmsClass.title', __('分类'));
        $grid->column('author', __('作者'));
        $grid->column('article_content', __('内容'));
        $grid->column('created_at', __('创建时间'));
        $grid->column('updated_at', __('更新时间'));
        //$grid->column('deleted_at', __('Deleted at'));

        return $grid;
    }

  • 修改CmsClass model
  • app/Admin/Models/CmsClass.php
<?php

namespace App\Admin\Models;

use Encore\Admin\Traits\DefaultDatetimeFormat;
use Illuminate\Database\Eloquent\Model;

class CmsClass extends Model
{
    //使用默认时间格式
    use DefaultDatetimeFormat;
    protected $table = 'cms_class';
    //增加select返回数据接口
    public function getAll()
    {
        $res=$this->get();
        $tmp=[];
        foreach($res as $v){
            $tmp[$v->id]=$v->title;
        }
        return $tmp;
    }
}

  • 修改form
  • app/Admin/Controllers/CmsArticleController.php
protected function form()
    {
        $classData=(new CmsClass())->getAll();
        $form = new Form(new CmsArticle());
        $form->text('title', __('标题'));
        $form->select('class_id', __('分类'))->options($classData);
        $form->text('author', __('作者'));
        $form->textarea('article_content', __('文章内容'));
        return $form;
    }

关于富文本编辑器 ueditor
composer require codingyu/ueditor

php artisan vendor:publish

# 选择ueditor 发布 
  • 修改admin配置文件
  • config/admin.php
'extensions' => [
    'ueditor' => [

            // 如果要关掉这个扩展,设置为false
            'enable' => true,

            // 编辑器的前端配置 参考:http://fex.baidu.com/ueditor/#start-config
            'config' => [
                'initialFrameHeight' => 400, // 例如初始化高度
            ],
            // 'field_type' => '自定义名字'
        ]
]
文件上传
文件存储修改
  • config/filesystems.php
'disks' => [
        'admin' => [
            'driver' => 'local',
            'root' => public_path('uploads'),
            'visibility' => 'public',
            'url' => env('APP_URL').'/uploads',
        ],
        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],
        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],
        //ueditor中图片上传配置
        'public' => [
            'driver' => 'local',
            'root' => public_path(),
            'url' => env('APP_URL'),
            'visibility' => 'public',
        ],
        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'endpoint' => env('AWS_URL'),
        ],

    ],
  • 创建一个空文件 public/uploads
修改form
  • app/Admin/Controllers/CmsArticleController.php
protected function form()
    {
        $classData=(new CmsClass())->getAll();
        $form = new Form(new CmsArticle());
        $form->text('title', __('标题'));
        $form->select('class_id', __('分类'))->options($classData);
        $form->text('author', __('作者'));
        // $form->textarea('article_content', __('文章内容'));
        $form->UEditor('article_content','文章内容');
        return $form;
    }

文章管理到此结束

引申mkdown编辑器

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵忠洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值