基于laravel的后台UI框架(类laravel-admin)

本人于去年做项目的时候使用了laravel-admin,当时觉得眼前一亮,原来后台框架还可以这么搞。

但此后结合实际情况,我们使用thinkphp比较多,所以我参考它的思路在Tp5上面实现了一套类似的框架,见我发表的另一篇文章:分享:基于(tp5.1、tp6.0)后台开发框架(设计思路参考laravel-admin)

现在又花了几天的时间,基于laralvel做了一个移植版本,主要是UI生成(form/table等)方面的。

仓库地址:github.com/ichynul/labuilder-web

UI生成核心仓库:github.com/ichynul/labuilder

与UI生成系统与laravel-admin的区别:

  1. 表单元素的统一

UI主要分成 table(表格), form(表单), search(搜索表单)content(自定义内容)
table / form / search 共用表单元素,实现了写法的统一
$form->($field, $label, $colsize);
$table->($field, $label);
$search->($field, $label, $colsize);
$label为空则使用翻译
form $colsize为空则默认12,col-md-12, 即元素单独占一行。
search $colsize为空则默认2,col-md-2, 即6元素占一行。
表单(form):

$form->show('id', '编号'); //默认 col-md-12
$form->text('name', '姓名', 6); // col-md-6
$form->radio('gender', '性别', '6 col-xs-12')->options([1 => '男', 2 => '女']); //col-md-6 col-xs-12
$form->switchBtn('status', '启用');
$form->show('created_at', '创建时间');

展示(show):

// 其实和from是一个东西:
// 把对应的表单元素替换为`show`、`match`、`matches`等纯显示的元素就行。
$form->show('id', '编号');
$form->show('name', '姓名', 6);
$form->match('gender', '性别')->options([1 => '男', 2 => '女']);
$form->match('status', '启用')->options([0 => '否', 1 => '是']);
$form->show('created_at', '创建时间');

//或者懒一点,在表单后面调用:$from->readonly()
//就可自动完成转换所以大多数情况是没必要单独写show页码,除非自动转换的效果达不到要求。
$form->show('id', '编号'); //show
$form->text('name', '姓名', 6); //show
$form->radio('gender', '性别', '6 col-xs-12')->options([1 => '男', 2 => '女']); //match
$form->switchBtn('status', '启用'); //match
$form->show('created_at', '创建时间'); //show
$from->readonly(); //自动把表单元素转换为显示元素

表格(table):

$table->show('id', '编号');
//使用表单元素[text,teatarea,checkbox,radio,select,switchBtn]配合autoPost方法,实现行内编辑
$table->text('name', '姓名')->autoPost();
$table->radio('gender', '性别')->options([1 => '男', 2 => '女'])->autoPost();
$table->switchBtn('status', '启用');
$table->show('created_at', '创建时间');

搜索表格(search),配合table使用,用于筛选数据:

$search->text('name', '姓名');
$search->radio('gender', '性别');
$search->switchBtn('status', '启用');
  1. 表格工具栏、操作栏高度自由
use Ichynul\Labuilder\Common\Builder;

public  function  buildTable(&$data)
{
    $table->show('id', 'ID');
    $table->show('username', '登录帐号');
    $table->text('name', '姓名')->autoPost()->getWrapper()->addStyle('max-width:80px');
    $table->show('role_name', '角色');
    $table->show('group_name', '分组');
    //工具栏
    $table->getToolbar()
        ->btnCreate()//打开create页面
        ->btnEnable()
        ->btnDisable()
        //->btnEnableAndDisable() //相当于上面两个都有 post请求 批量启用/禁用
        ->btnDestroy()//post请求 批量删除
        ->btnRefresh()//刷新;
        //以上为封装好的
        //以下自定义批量操作:
        //post请求到同控制器`clearErrors` 批量清除登录错误次数
        ->btnPostChecked('clear_errors', url('/admin/thispage/clearErrors'), '重置', 'btn-info', 'mdi-backup-restore', 'title="重置登录失败次数"')
        //打开新页面,并附带已被选中的`ids` 如 /admin/thispage/changepid?ids=1,2,3,7
        ->btnOpenChecked('changepid', url('/admin/thispage/changepid'), '修改过上级', 'btn-info', 'mdi-backup-restore', 'title="修改过上级"');

    //操作栏
    $table->getActionbar()
        ->btnEdit()//打开edit页面
        ->btnEnable()
        ->btnDisable()
        //->btnEnableAndDisable() //相当于上面两个都有post请求 单条启用/禁用
        ->btnShow()//打开show页面
        ->btnDestroy()//post请求 单条删除
        //以上为封装好的
        //以下自定义单条操作:
        // 打开另外一个控制器`account`中的`create`页面
        ->btnLink('account', url('/admin/account/create', ['member_id' => '__data.pk__']), '', 'btn-success', 'mdi-square-inc-cash');
        //post请求到同控制器`clearErrors` 单条清除登录错误次数
        ->btnPostRowid('clear_errors', url('/admin/thispage/clearErrors'), '', 'btn-info', 'mdi-backup-restore', 'title="重置登录失败次数"');
}

public  function  clearErrors()
{
    $ids = explode(',', request('ids'));

    $res = true;

    if ($res) {
        return  response()->json(
            ['code' => 1, 'msg' => '清除成功']
        );
    } else {
        return  response()->json(
            ['code' => 0, 'msg' => '清除失']
        );
    }
}

public  function  changepid()
{
    $ids = explode(',', request('ids'));
    $builder = Builder::getInstance('个人设置', '资料修改');
    $form = $builder->form();
    $list = $this->dataModel->where('id' ,'in',$ids)->get();

    $form->items('list', '已选会员')->dataWithId($list)->with(
        $table->show('id', 'ID'),
        $table->show('username', '登录帐号')
    )->canAdd(false)->cnaDelete(false)->size(0, 12)->showLabel(false);
    $form->select('newpid', '新上级')->dataUrl('/admin/thispage/selectPage');

    return  $builder->render();
}
  1. 其他很多细节也不同,就不一一展示。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!