使用 Laravel-Administrator 快速生成数据模型管理员后台教程
说明
不久前开源了团队内部 改良过的Administrator ,很多朋友在集成的时候遇到问题,这里写一个简单的教程,演示如何一步步集成 Administrator 到现有的项目中。
准备
假设有一套博客程序,博客程序有数据模型 User
和 Topic
,我们需要为这两个数据模型开启后台编辑功能。
为了方便演示,做了一份 实例代码,可以跟着做,这个提交 2eb50160dd 的状态是已经创建好 User
和 Topic
数据模型、迁移文件,并且有对应的 数据填充。
使用以下命令安装即可:
- composer install
- php artisan migrate
- php artisan db:seed
简要步骤
- 安装 administrator;
- 配置;
- Model 配置信息。
1. 安装 administrator
composer require "summerblue/administrator:^1.0"
2. 配置
1). 编辑 config/app.php
在 providers
数组里面增加:
'providers' => [
Frozennode\Administrator\AdministratorServiceProvider::class,
]
2). 执行以下命令生成 config 信息:
php artisan vendor:publish
3). 创建 Administrator 配置信息存放文件夹
创建以下两个文件夹:
config/administrator
- 数据模型配置信息存放目录config/administrator/settings
- 设置信息存放目录
3. Model 配置信息
1). administrator.php 文件夹中增加数据模型入口
找到 menu 选项:
'menu' => [
'用户管理' => [
'users' // 对应需要创建的文件:`config/administrator/users.php`
],
'内容管理' => [
'posts' // 对应需要创建的文件:`config/administrator/posts.php`
]
],
为了方便演示,找到 permission
选项,retuen true,注意上线必须修改过来,这里是后台访问权限控制。
'permission' => function () {
// return Auth::check();
return true;
},
如下图:
还有一个选项也是必填的,如下填入即可,这个选项是用来配置进入后台默认的页面:
'home_page' => 'posts',
2). 数据模型配置选项
创建与模型对应的配置文件:
config/administrator/posts.php
内容见下面config/administrator/users.php
篇幅原因,内容请见 GitHub 项目
<?php
use App\Post;
return [
'title' => '文章',
'heading' => '文章管理',
'single' => '文章',
'model' => Post::class,
'columns' => [
'id' => [
'title' => 'ID'
],
'title' => [
'title' => 'Title',
],
'body' => [
'title' => 'Content',
'sortable' => false,
'output' => function($value)
{
return str_limit($value);
},
],
'user_name' => [
'title' => "Author",
'relationship' => 'user', //this is the name of the Eloquent relationship method!
'select' => "(:table).name",
],
'created_at',
'operation' => [
'title' => '管理',
'output' => function ($value, $model) {
return $value;
},
'sortable' => false,
],
],
'edit_fields' => [
'title' => [
'title' => '标题',
'type' => 'text'
],
'body' => [
'title' => '内容',
'type' => 'textarea'
],
'user' => array(
'type' => 'relationship',
'title' => 'Author',
'name_field' => 'name',
)
],
'filters' => [
'title' => [
'title' => '标题',
]
],
];
这时候访问后台:
一些信息
本帖已被设为精华帖!
本帖由 Summer
于 8年前 加精
:+1: 大赞,用了几次一直觉得 UI 很有需要改良,十分钟构建后台的神器 :smile:
这个是不是不支持laravel 5.2.* ?
@benjy 只测试过 5.1
按照楼主的教程安装好了,我有一个问题,为什么在routers.php 没有写路由也可以访问到 http://xxx.xxxx.com/admin/post 的呢 ?
@huchiwen 流程大概是这样的:
@Summer 我找到了 谢谢你提点~~
@Summer 大神,这个您 fork 来的项目源代码 administrator 是不是不支持 laravel 5.2 ? 直接拉你的 demo 可一成功,但集成到 lara5.2 的时候老是报错: Object of class Illuminate\Routing\UrlGenerator could not be converted to string ,不知道是什么情况?另外原作者的项目 frozennode/administrator 已经支持 lara 5.* 了,大神能不能也同步更新一下啊?
关于
administrator.php
配置文件中的Permission
选项可以详细介绍下吗,和自带的auth结合不上。@messikiller 我也遇到了同样的问题 Object of class Illuminate\Routing\UrlGenerator could not be converted to string
配置文件并没有找到 administrator.php
自己从verdor里面复制了一个出来,配置后,访问失败
route:cache 执行了,也不么能访问。
Laravel 5.4 报错如下:
这样子貌似可以解决:
vendor/summerblue/administrator/src/Frozennode/Administrator/Validator.php 58行
@benjy 支持,我就是在5.2上试的
模型:
模型配置文件:
报错:
Call to undefined method Illuminate\Database\Query\Builder::getPlainForeignKey()
我做错什么了吗。。。
我安装后,在vendor中为啥找不到Frozennode\Administrator。。能找到summerblue/adminstrator,但是是空文件夹。。。我想看源代码都找不到地方。。。
膜拜大牛
@Summer 不支持5.5?我用的是
~1.1
版本,执行报错:其一:读取不到配置信息
config('app.name');
其二:到这步我卡住了:joy:
望大佬指点:pray:
@Summer 不对啊,包的
composer.json
文件中加载的是Laravel 5.5
的版本啊,问题应该不是出现在版本不支持上不知这个帖子您还是否更新,我想管理上传的文件(视频),不知该如何配置?
我模仿管理上传的图片改成了这样,
可是会提示我“文件大小错误”
望收到回复,谢谢
请问如果想更换后台的样式的话需要把包里面那些样式改了还是有其他的方式可以更改呢
"筛选”按钮默认是中文,请问改哪里的配置使其改为英文?
@discus2013
需要修改\vendor\summerblue\src\views\templates目录下的模板文件
@Kevinvinvin 我也遇到同样的为题,不是打有没有解决?版主好像不维护这个项目了
请问column字段可以根据数据库图片链接显示图片吗
textarea 怎么才能改为 富文本编辑器呢
您好,这个应该怎么升级呢,我看packagist.org/有7.01的包,composer update更新会报错Installation request for summerblue/administrator 6.* -> satisfiable by summerblue/administrator[6.0.0, 6.0.1, 6.0.2, 6.0.3, 6.0.4].