我也来分享一个自己撸的管理后台开发框架吧
说明
前前后后开发了有半年了,公司内部多个项目的后台也在使用这个框架,反馈良好,在这里分享给大家,欢迎使用和拍砖。
Github : laraval-admin
Demo admin/admin
laraval-admin
目前支持Laravel 5.1、5.2、5.3,作为一个扩展包,不会干扰Laravel
框架下的其它项目和功能,你可以在需要的时候使用它提供的功能,也可以自定义管理页面。同时封装了很多常用的web组件和form元素,并且提供了比较简单的API,能用很少的代码构建功能完善的后台功能。
Feature
- 路由配置
- 菜单配置
- 显示布局
- 数据模型表格
- 数据模型表单
- WEB组件
- 表格
- 表单
- 盒子容器
- 信息盒子
- 选项卡
- 滑动相册
- 折叠容器
- 数据图表 TODO
- treegrid TODO
- 权限控制
代码示例
//构建表格
public function grid()
{
return Admin::grid(User::class, function (Grid $grid) {
$grid->model()->where('id', '>', 10);
$grid->id('ID')->sortable();
$grid->name('用户名')->style('color:green');
$grid->email('邮箱')->link('mailto:{$value}');
$grid->profile()->mobile('手机号')->value(function($mobile) {
return "+86 $mobile";
});
$grid->column('profile.homepage', '个人主页')->link();
$grid->created_at('创建时间');
$grid->updated_at('更新时间');
$grid->paginate(15);
$grid->filter(function ($filter) {
$filter->like('name', '用户名');
$filter->like('email', '邮箱');
});
});
}
//构建表单
public function form()
{
return Admin::form(User::class, function (Form $form) {
$form->display('id', 'ID');
$form->text('name', '用户名');
$form->email('email', '邮箱');
$form->url('profile.homepage', '个人主页');
$form->ip('profile.last_login_ip', '登录ip');
$form->datetime('profile.last_login_at', '登录时间');
$form->color('profile.color', '颜色')->default('#c48c20');
//图片上传,裁切,加水印
$form->image('profile.avatar', '头像')
->resize(null, 200, function ($constraint) {
$constraint->aspectRatio();
})->insert('upload/image/watermark.png', 'bottom-right', 10, 10);
// 上传文件
$form->file('profile.document', '文档')->rules('mimes:doc,docx,xlsx');
$form->mobile('profile.mobile', '手机号')->default(13500000000);
$form->text('profile.address', '地址');
$form->json('profile.address', 'JSON');
$form->date('profile.birthday', '生日');
$form->radio('profile.gender', '性别')->values(['0' => '女', '1'=> '男']);
$form->map('profile.lat', 'profile.lng', '位置');
$form->slider('profile.age', '年龄')->options(
['max' => 50, 'min' => 20, 'step' => 1, 'postfix' => '岁']
);
// 时间范围
$form->datetimeRange('profile.created_at', 'profile.updated_at', '时间线');
$form->multipleSelect('friends', '好友')->options(User::all()->pluck('name', 'id'));
$form->checkbox('roles', '角色')->values(Role::all()->lists('display_name', 'id'));
$form->display('created_at');
$form->display('updated_at');
});
}
// 布局
public function index()
{
return Admin::content(function (Content $content) {
$content->header('Dashboard');
$content->description('description...');
$content->row(function ($row) {
$row->column(3, new InfoBox('New Users', 'users', 'aqua', '/admin/users', '1024'));
$row->column(3, new InfoBox('New Orders', 'shopping-cart', 'green', '/admin/orders', '150%'));
$row->column(3, new InfoBox('Movies', 'film', 'yellow', '/admin/movies', '2786'));
$row->column(3, new InfoBox('Documents', 'file', 'red', '/admin/files', '698726'));
});
$table = new Table(
['id', '标题', '发布时间', '浏览量', '评论数'],
Article::take(10)->get(['id', 'title', 'created_at', 'view_count', 'comment_count'])->toArray()
);
$content->row((new Box('Last Articles', $table))->style('info')->solid());
});
}
截图
详细使用请戳README
其它
laravel-admin
基于以下组件或者服务开发:
- Laravel
- AdminLTE
- Bootstrap Markdown
- Datetimepicker
- CodeMirror
- font-awesome
- moment
- Google map
- Tencent map
- bootstrap-fileinput
- jquery-pjax
License
laravel-admin
is licensed under The MIT License (MIT).
推荐文章: