Skip to content

charlesyq/laravel-admin

 
 

Repository files navigation

开始

环境依赖

  • php = 5.6
  • mysql
  • redis

计划

  • 自动布局(已经在生产环境上面使用,等稳定了再合并。)
  • 写单元测试
  • 计划在2月份发布第一个版本,如果单元测试没有写完或者单元测试没有测试完毕,则会跳票,希望理解。(跳票中)

快速构建CURD页面

开始

  • 注入 控制器 use App\Http\Controllers\Admin\HtmlBuilderController;
 protected $html_builder; /** * 构造方法 * * @author yangyifan <yangyifanphp@gmail.com> */ public function __construct(HtmlBuilderController $html_builder) { parent::__construct(); $this->html_builder = $html_builder; } 

构建 列表页面

显示列表页代码
 /** * 获得后台用户 * * @return Response * @author yangyifan <yangyifanphp@gmail.com> */ public function getIndex(Request $request) { return $this->html_builder-> builderTitle('后台用户列表')-> builderSchema('id', 'id')-> builderSchema('admin_name', '管理员名称')-> builderSchema('limit_name','角色名称')-> builderSchema('mobile', '手机号码')-> builderSchema('state_name', '状态')-> builderSchema('last_login', '最后一次登陆时间')-> builderSchema('create_date', '创建时间')-> builderSchema('handle', '操作')-> builderSearchSchema('admin_name', '管理员名称')-> builderBotton('增加后台用户', createUrl('Admin\Admin\AdminInfoController@getAdd'))-> builderJsonDataUrl(createUrl('Admin\Admin\AdminInfoController@getSearch',[ 'limit_id' => $request->id ]))-> builderList(); } 
获取列表页数据代码
 /** * 搜索 * * @param Request $request * @author yangyifan <yangyifanphp@gmail.com> */ public function getSearch(Request $request) { //接受参数 $search = $request->get('search', ''); $sort = $request->get('sort', 'id'); $order = $request->get('order', 'asc'); $limit = $request->get('limit',0); $offset = $request->get('offset', config('config.page_limit')); $limit_id = $request->limit_id; //admin_info 表名 $admin_info_table_name = tableName('admin_info'); //解析params parse_str($search); //组合查询条件 $map = []; if (!empty($limit_id)) { $map[$admin_info_table_name . '.limit_id'] = $limit_id; } if (!empty($admin_name)) { $map[$admin_info_table_name . '.admin_name'] = ['like','%'.$admin_name.'%']; } $data = AdminInfoModel::search($map, $sort, $order, $limit, $offset); echo json_encode([ 'total' => $data['count'], 'rows' => $data['data'], ]); } 
效果图

列表页

构建 编辑 or 添加 页面

代码
 /** * 编辑角色 * * @param int $id * @author yangyifan <yangyifanphp@gmail.com> */ public function getEdit(Request $request) { $infos = AdminInfoModel::find($request->get('id')); return $this->html_builder-> builderTitle('编辑后台用户')-> builderFormSchema('admin_name', '管理员名称', $type = 'text')-> builderFormSchema('password', '登录密码', $type = 'password', '', '', '', '')-> builderFormSchema('password_confirmation', '确认密码', $type = 'password', '', '', '', '')-> builderFormSchema('limit_id', '角色', $type = 'select', $default = '', $notice = '', $class = '', $rule = '*', $err_message = '', AdminInfoModel::adminInfoLimitName(), '', 'name')-> builderFormSchema('mobile', '手机', $type = 'text', $default = '', $notice = '', $class = '', $rule = '', $err_message = '', $option = '', $option_value_schema = '')-> builderFormSchema('state', '状态', 'radio', '', '', '', '', '', [1=>'开启', '2'=>'关闭'] ,$infos->state)-> builderConfirmBotton('确认', createUrl('Admin\Admin\AdminInfoController@postEdit'), 'btn btn-success')-> builderEditData($infos)-> builderEdit(); } 
处理编辑代码
 /** * 处理更新角色 * * @author yangyifan <yangyifanphp@gmail.com> */ public function postEdit(AdminInfoRequest $request) { $data = $request->except('password_confirmation'); $Model = AdminInfoModel::findOrFail($data['id']); if (empty($data['password'])) { $data['password'] =$Model->password; }else{ $data['password'] = bcrypt($data['password']); } $Model->update($data); //更新成功 return $this->response(self::SUCCESS_STATE_CODE, trans('response.update_success'), [], true, createUrl('Admin\Admin\AdminInfoController@getIndex')); } 
效果图

编辑或者添加页面

构建 tree 页面
代码
 /** * 获得后台菜单 * * @return Response * @author yangyifan <yangyifanphp@gmail.com> */ public function getIndex() { return $this->html_builder-> builderTitle('后台菜单列表')-> builderSchema('id', 'id')-> builderSchema('menu_name', '菜单名称')-> builderSchema('parent_name','父级菜单名称')-> builderSchema('handle', '操作')-> builderBotton('增加后台菜单', createUrl('Admin\Admin\AdminMenuController@getAdd'))-> builderTreeData(AdminMenuModel::getAll())-> builderTree(); } 
效果图

tree页面

构建 tab 页面

代码
 /** * 编辑商品信息 * * @param Request $request * @author yangyifan <yangyifanphp@gmail.com> */ public function getEdit(Request $request) { $goods_info = GoodsModel::getGoodsInfo($request->get('id')); return $this->html_builder->builderTabTitle(trans('goods.goods_title14')) ->builderTabSchema( $this->html_builder-> builderTitle(trans('goods.goods_title15'))-> builderFormSchema('goods_name', trans('goods.goods_title4'))-> builderFormSchema('id', 'id', 'hidden')-> builderConfirmBotton(trans('base.comfirm_add_data'), '', 'btn btn-success')-> builderEditData($goods_info) )->builderTabSchema( $this->html_builder-> builderTitle(trans('goods.goods_title32'))-> builderFormSchema('meta_title', trans('goods.goods_title33'))-> builderFormSchema('meta_keywords', trans('goods.goods_title34'), 'textarea')-> builderFormSchema('meta_description', trans('goods.goods_title35'), 'textarea')-> builderConfirmBotton(trans('base.comfirm_add_data'), '', 'btn btn-success')-> builderEditData($goods_info) )->builderBotton(trans('base.return'), createUrl('Admin\Goods\GoodsController@getIndex'), 'glyphicon glyphicon-arrow-left') 
效果图

tab 页面

生成 CURD 代码

效果图

效果图

自动布局简要介绍

自动布局之前

自动布局之后

还有一些细节没有完善好,所以没有放出来。

注意

  • 代码在继续完善中,已经用于生产环境使用,很多细节待完善,文档也会慢慢更新的!
  • 需要下载一份sql执行到你的本地,然后使用这份sql的数据,sql地址保存在"资料文件"--> laravel.sql
  • email:yangyifanphp@gmail.com
  • 账户:yangyifan,密码:qiqi..
  • 线上测试地址

教程

License

MIT

About

一个简单的后台系统,可以快速构建CURD操作

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 77.2%
  • HTML 18.7%
  • PHP 4.0%
  • CSS 0.1%
  • Ruby 0.0%
  • Batchfile 0.0%