vinlon/laravel-lay-admin 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

vinlon/laravel-lay-admin

Composer 安装命令:

composer require vinlon/laravel-lay-admin

包简介

LayUI Admin Starter for Laravel Project

README 文档

README

更新日志

v1.0.0 修改enum库版本,PHP版本最低要求为8.0

v0.8.0: 将角色改为通过枚举类定义,不再写入数据库

v0.7.1: 增加管理员密码找回功能

v0.7.0: 后台用户不再通过命令行创建,第一次打开后会进入初始化页面

v0.6.x: 增加资源管理功能,包括图片管理和内容管理,不需要手动执行db:seed初始化角色

v0.5.0: 将菜单的定义放在配置文件中(去掉admin_menus表及菜单管理页面),免去上线时同步系统菜单的步骤

v0.4.0: 更新layui版本到v2.6.4, 查看更新日志

v0.3.1: 添加表单必填项的自动处理功能

v0.3.0: api路由前缀由admin改为lay-admin,以免和业务端代码产生冲突

v0.2.4: BaseController 增加 paginateResponse 方法,简化分页数据查询的代码

使用

  1. 引入package

composer require vinlon/laravel-lay-admin
  1. 发布 public 文件

php artisan vendor:publish --provider="Vinlon\Laravel\LayAdmin\LayAdminServiceProvider" --tag=public --force
  1. 发布 config 文件

php artisan vendor:publish --provider="Vinlon\Laravel\LayAdmin\LayAdminServiceProvider" --tag=config
  1. 创建数据库表并初始化数据

# 如果数据库中已经存在对应的数据表,需要先将其 drop
php artisan migrate
  1. 生成JWT_SECRET

php artisan jwt:secret

配置建议

# 默认值为admin, 管理后台访问地址为 ${APP_URL}/admin
LAY_ADMIN_ROUTE_PREFIX=
LAY_ADMIN_DISPLAY_NAME=

# JWT Token 有效期,单位为‘分’,默认值为 60 分钟
JWT_TTL=

# 如果需要通过邮件找回密码,则需要添加邮箱相关的配置
MAIL_MAILER=smtp
MAIL_HOST={邮箱使用的smtp服务器}
MAIL_PORT=465
MAIL_USERNAME={邮箱用户名}
MAIL_PASSWORD={邮箱密码}
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS={邮箱用户名}
MAIL_FROM_NAME={发件人名称}

命令

  • 重置密码
php artisan lay-admin:reset-password admin admin
=====重置成功=====
当前密码为: admin

开发指引

使用auth:lay-admin middleware 对请求的登录状态进行验证

Route::group(['middleware' => ['auth:lay-admin']], function () {
    //这里放置你的需要登录Admin后台API路由
});

角色定义

系统默认只添加了【超级管理员】这一个角色,如果需要更多角色,可以通过如下流程添加:

  1. 重新定义一个继承AdminRole的角色类

  2. 在getMenuIds方法中定义该角色的菜单

  3. 在getPrivileges方法返回该角色对应的权限

class AdminRoleExtend extends AdminRole
{
    const TEST = '新角色测试';

    /**
     * @return string[]
     */
    public function getMenuIds()
    {
        $roleMenus = [
            self::TEST => ['_my.profile', 'ops.setting', '_user'],
        ];

        return Arr::get($roleMenus, $this->value, []);
    }

    /**
     * @return string[]
     */
    public function getPrivileges()
    {
        $rolePrivileges = [
            self::TEST => [1, 2, 3],
        ];

        return Arr::get($rolePrivileges, $this->value, []);
    }
}

BaseController

  • LayAdmin对数据返回的格式有统一要求,可调用 successResponse 和 errorResponse 方法分别对成功和失败的返回结果进行封装

  • 分页查询的结果可以调用 paginateResponse 返回,该方法接收一个 Eloquent Builder 作为参数

表单必填项自动处理

对于如下的表单定义,框架会找到 lay-verify="required" 的元素,自动进行如下处理:

  1. 通过 .parent().pref('label') 找到对应的label, 在label的内容前添加必填项标记( 红色的 * )

  2. 将 input 元素的 layType 设置为 tips, 将错误提示的样式改为 tips

  3. 根据label的值(菜单名称),为input元素定义默认的 placeholder 和 lay-reqtext (请输入菜单名称)

<div class="layui-form-item">
  <label class="layui-form-label">菜单名称</label>
  <div class="layui-input-block">
    <input type="text" name="title" value="" lay-verify="required" autocomplete="off" class="layui-input">
  </div>
</div>

自定义请求方法

在html代码中,可使用如下方法发起HTTP请求

admin.get(url, doneCallback, options)

admin.post(url, data, doneCallback, options)

admin.postJson: function (url, data, doneCallback, options)

admin.del(url, id, doneCallback, options)

vinlon/laravel-lay-admin 适用场景与选型建议

vinlon/laravel-lay-admin 是一款 基于 JavaScript 开发的 Composer 扩展包,目前已累计 418 次下载、GitHub Stars 达 2, 最近一次更新时间为 2020 年 12 月 01 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 vinlon/laravel-lay-admin 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 vinlon/laravel-lay-admin 我们能提供哪些服务?
定制开发 / 二次开发

基于 vinlon/laravel-lay-admin 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 418
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: JavaScript

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-12-01