文章表
# 创建一个文章表
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编辑器