Laravel-Administrator 快速创建数据管理后台
说明
管理界面是基础设施中非常重要的一部分, 很常用的功能, 每一个成熟的框架, 都有其对应的解决方案, 如:
- Django 框架的 自动 Admin 功能;
- ROR 的 Active Admin
Laravel-Administrator 是 Laravel 的扩展包, 利用强大的 Eloquent ORM, 加上简单的配置信息, 快速生成数据管理后台.
在开发时间不充裕的情况下, 用很短的时间, 就能创建一个后台, 这个插件会让你在使用 Laravel 开发时, 感受到满满的幸福感感.
屏幕截图
安装
1. composer.json
"frozennode/administrator": "4.*"
2. install
composer update
3. provider
修改 app/config/app.php
文件, 在 providers
数组里面添加:
'Frozennode\Administrator\AdministratorServiceProvider',
4. package config
发布扩展包配置信息信息, 以下命令会生成文件 app/config/packages/frozennode/administrator/administrator.php
php artisan config:publish frozennode/administrator
至此, 安装完毕.
修改 administrator.php 配置信息
官方的文档在这 http://administrator.frozennode.com/docs/c...
这里有个例子, 加上简单的注释, 此例子是 laravel-blog
项目的后台配置信息, 源码见这里 :
<?php
return array(
/**
* 后台入口地址
*/
'uri' => 'admin',
/**
* 管理员后台名称, 在左上角显示
*/
'title' => 'Admin Panel',
/**
* Model 配置文件存放地
*/
'model_config_path' => app('path') . '/config/administrator',
/**
* 站点 `设置` 功能的配置文件存放地
*/
'settings_config_path' => app('path') . '/config/administrator/settings',
/**
* 这里是配置菜单的地方, 每一个元素代表了上面定义的 `model_config_path` 目录
* 下有对应的文件, 如: 'categories' 对应 categories.php 文件, 这个规则对
* 站点设置信息通用.
*
* 更多信息请见文档: http://administrator.frozennode.com/docs/configuration#menu
*
* @type array
*
* array(
* 'E-Commerce' => array('collections', 'products', 'product_images', 'orders'),
* 'homepage_sliders',
* 'users',
* 'roles',
* 'colors',
* 'Settings' => array('settings.site', 'settings.ecommerce', 'settings.social'),
* 'Analytics' => array('E-Commerce' => 'page.ecommerce.analytics'),
* )
*/
'menu' => [
'categories',
'tags',
'posts',
'comments',
'users',
],
/**
* 后台权限判断, 如果返回 false 的话, 会自动跳转到 login_path 页面
*/
'permission'=> function()
{
return Auth::check();
},
/**
* 是否使用自定义后台首页, true 的话, 会使用 dashboard_view
*/
'use_dashboard' => false,
/**
* 如果你想要自定义后台首页, 上面的 use_dashboard 改为 true, 并在此提供指定的 view
*/
'dashboard_view' => '',
/**
* 后台首页, 这里的值对应 menu 的元素, 与 'use_dashboard' => false, 配合使用
*/
'home_page' => 'posts',
/**
* 右上角 "返回首页" 点击后的跳转链接
*/
'back_to_site_path' => '/',
/**
* 登录链接, 当 `permission` 选项返回 false 的时候, 跳转到此页面
*/
'login_path' => 'login',
/**
* 是否在后台有退出按钮, 是的话填写 path, 否则填写 false
*/
'logout_path' => false,
/**
* 当用户没有权限, 跳转到登录页面时, 会把用将要请求的页面放在 Session::get('redirect')
*/
'login_redirect_key' => 'redirect',
/**
* 全局默认每页显示多少数据
*/
'global_rows_per_page' => 20,
/**
* 多语言支持, 这里配置的话, 右上角会出现多语言的选择菜单
*/
'locales' => array(),
);
administrator 的后台数据配置文件
后台是根据 后台数据配置文件
生成的, 这些文件在上面 menu
选项里面 定义 .
根据上面的定义, 在 config
文件夹下创建 administrator
文件夹, 并创建对应的文件如以下:
- categories.php
- comments.php
- posts.php
- tags.php
- users.php
内容请见源代码 - Laravel Blog 项目的后台数据配置文件
以下拿 posts.php
文件为例, 生成后台页面请参照文章开始的截图:
<?php
return [
// 菜单里面显示的名字
'title' => lang('Post'),
// 右上角有 `New $single` 的创建新内容的文字
'single' => lang('Post'),
// 依赖于 Eloquent ORM 作数据读取和处理
'model' => 'Post',
// 显示页面
'columns' => [
// 当前列在数据库中的字段名称, 下同
'id' => [
// 这个参数定义当前列的名称, 下同
'title' => 'ID'
],
'title' => [
'title' => lang('Title'),
],
'body' => [
'title' => lang('Content'),
// 这个参数定义了是否支持排序, 下同
'sortable' => false,
// 这是自定义输出内容, 如果不定义的话, 会使用字段对应的数据, 下同
'output' => function($value)
{
return make_excerpt($value);
},
],
'user_name' => [
'title' => lang("Author"),
// 自定义字段, 读取对应关系里面的数据, 下同
'relationship' => 'user',
// 对应关系在这里显示的内容
'select' => "(:table).username",
],
'category_name' => [
'title' => lang("Category"),
'relationship' => 'category', //this is the name of the Eloquent relationship method!
'select' => "(:table).name",
],
'comments_count' => [
'title' => 'Comments Count'
],
// 不指定 title 的话, 会使用字段作为 title
'created_at',
],
// 单点击选择单条数据的时候, 右边会出现编辑小视图, 这里定义了视图里面的字段
'edit_fields' => [
// 对应字段
'title' => [
// 标题
'title' => lang('Title'),
// 可编辑字段的类型
'type' => 'text'
],
'category' => array(
// type 为 relationship 会根据 name_field 自动生成可选择的内容
'type' => 'relationship',
'title' => lang('Category'),
'name_field' => 'name',
)
],
// 过滤, 搜索
'filters' => [
'title' => [
'title' => lang('Title'),
]
],
// 点击选择某条数据时候, 右上角的链接
'link' => function($model)
{
return URL::route('posts.edit', $model->id);
},
];
详细的 Model 配置信息文档请见 这里 .
文章完毕, 多读几遍 官方文档 , 这个扩展包很值得学.
熟练使用的话, 像 Laravel-blog 这种简单的项目后台配置, 20 分钟不到的时间就做完后台, 效率是很让人喜爱的.
sunglasses: :beer:
@wcpsoft 程序员哥们, 测试. :smile: 头像不错.
@blue5tar 请把你的测试的留言都删了, 不然我只能屏蔽你了.
@harryxu 当然, 这个东西的使用范围在
phpmyadmin
和手写后台
之间.@gkrim 抱歉你的回复会被删除.
laravel-admin 创建(create)和编辑(edit)时,如果某个字段设置了唯一,编辑时该字段没有修改也报冲突,怎么解决的。
laravel 5.5
Laravel-Administrator ^1.1.4
配置文件:
Order_user模型:
报错:Call to undefined method Illuminate\Database\Query\Builder::getPlainForeignKey()
模型的order()方法测试没问题,但在admin中使用报错。请教一下怎么解决啊。。
ErrorException (E_WARNING)
sizeof(): Parameter must be an array or an object that implements Countable
请问有没有人遇到过这个问题啊?
@Summer 可以用指定的控制器可以选择的接管他的路由吗
@Albreeze PHP 7.2 + 以上的版本不兼容问题
7.2+ 的版本 sizeof() count()