使用 Laravel-Administrator 快速生成数据模型管理员后台教程
72

说明

不久前开源了团队内部 改良过的Administrator ,很多朋友在集成的时候遇到问题,这里写一个简单的教程,演示如何一步步集成 Administrator 到现有的项目中。

Demo 代码:https://github.com/summerblue/administrator-demo

准备

假设有一套博客程序,博客程序有数据模型 UserTopic ,我们需要为这两个数据模型开启后台编辑功能。

为了方便演示,做了一份 实例代码,可以跟着做,这个提交 2eb50160dd 的状态是已经创建好 UserTopic 数据模型、迁移文件,并且有对应的 数据填充

使用以下命令安装即可:

  1. composer install
  2. php artisan migrate
  3. php artisan db:seed

简要步骤

  1. 安装 administrator;
  2. 配置;
  3. Model 配置信息。

1. 安装 administrator

composer require "summerblue/administrator:^1.0"

file

2. 配置

1). 编辑 config/app.phpproviders 数组里面增加:

'providers' => [
    Frozennode\Administrator\AdministratorServiceProvider::class,
]

2). 执行以下命令生成 config 信息:

php artisan vendor:publish

3). 创建 Administrator 配置信息存放文件夹

创建以下两个文件夹:

  1. config/administrator - 数据模型配置信息存放目录
  2. 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;
    },

如下图:
file

还有一个选项也是必填的,如下填入即可,这个选项是用来配置进入后台默认的页面:

    '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' => '标题',
        ]
    ],

];

这时候访问后台:

file

一些信息

  • administrator 支持多语言,修改 config/app.php 的 'locale' => 'zh-CN' 可使用中文;
  • 文档就在项目的 docs 里,也可以 点击这里 查看, 实例文件 知道一看;
  • 想要灵活使用 administrator,文档 至少得多过几遍;
  • 想要查看更多的用例,PHPHub 的后台就是使用 administrator 构建,请参阅。

Practice makes perfect.

本帖已被设为精华帖!
本帖由 Summer 于 2年前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 22

:+1: 大赞,用了几次一直觉得 UI 很有需要改良,十分钟构建后台的神器 :smile:

2年前

这个是不是不支持laravel 5.2.* ?

2年前
Summer

@benjy 只测试过 5.1

2年前

按照楼主的教程安装好了,我有一个问题,为什么在routers.php 没有写路由也可以访问到 http://xxx.xxxx.com/admin/post 的呢 ?

2年前
Summer

@huchiwen 流程大概是这样的:

  1. config/app.php 里面加载了 AdministratorServiceProvider.php;
  2. AdministratorServiceProvider 里的 register 方法里加载了 route 看 这里
2年前

@Summer 我找到了 谢谢你提点~~

2年前

@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.* 了,大神能不能也同步更新一下啊?

2年前

关于 administrator.php 配置文件中的 Permission 选项可以详细介绍下吗,和自带的auth结合不上。

1年前

@messikiller 我也遇到了同样的问题 Object of class Illuminate\Routing\UrlGenerator could not be converted to string

1年前
h:\myenv\apache\htdocs\okman {git}{hg}
 $  php artisan vendor:publish
Publishing complete for tag []!

配置文件并没有找到 administrator.php
自己从verdor里面复制了一个出来,配置后,访问失败
route:cache 执行了,也不么能访问。

1年前

Laravel 5.4 报错如下:

file

这样子貌似可以解决:vendor/summerblue/administrator/src/Frozennode/Administrator/Validator.php 58行

    /**
     * Sets the rules.
     *
     * @param array $rules
     */
    public function setRules(array $rules)
    {
        $parser =  new ValidationRuleParser([]);
        $this->rules = $parser->explode($rules)->rules;
        // $this->rules = $this->explodeRules($rules);
    }
1年前

@benjy 支持,我就是在5.2上试的

1年前

模型:

class Oauth_user extends Model
{
      public function order()
         {
             return $this->hasOne('App\Http\Model\Order_user');
         }
}

模型配置文件:

use App\Http\Model\Oauth_user;
'columns'     => [
        'name'   => array(
            'title'        => '姓名',
            'relationship' => 'order',
            'select'       => "(:table).name",
        )
    ],

报错:
Call to undefined method Illuminate\Database\Query\Builder::getPlainForeignKey()

我做错什么了吗。。。

11个月前

我安装后,在vendor中为啥找不到Frozennode\Administrator。。能找到summerblue/adminstrator,但是是空文件夹。。。我想看源代码都找不到地方。。。

11个月前

膜拜大牛

10个月前

@Summer 不支持5.5?我用的是 ~1.1版本,执行报错:

其一:读取不到配置信息 config('app.name');

file

其二:到这步我卡住了:joy:

file

望大佬指点:pray:

7个月前

@Summer 不对啊,包的 composer.json 文件中加载的是 Laravel 5.5 的版本啊,问题应该不是出现在版本不支持上

7个月前

不知这个帖子您还是否更新,我想管理上传的文件(视频),不知该如何配置?

我模仿管理上传的图片改成了这样,

file

可是会提示我“文件大小错误”
望收到回复,谢谢

file

5个月前

请问如果想更换后台的样式的话需要把包里面那些样式改了还是有其他的方式可以更改呢

3个月前

"筛选”按钮默认是中文,请问改哪里的配置使其改为英文?

3个月前

@discus2013
需要修改\vendor\summerblue\src\views\templates目录下的模板文件

3个月前
fnf1993

@Kevinvinvin 我也遇到同样的为题,不是打有没有解决?版主好像不维护这个项目了

2个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!