Speedy - 简洁灵活的 Laravel 管理后台

Speedy是基于 vue2 + bootstrap 的 laravel 管理后台,能够快速开发好一个权限后台,而且能够非常方便的生成一级或者二级菜单。

项目地址: https://github.com/HanSon/speedy

欢迎前来 star 以及提 issue !

file

安装

laravel 5.1 以上:

composer require hanson/speedy

laravel 5.1 :

composer require hanson/speedy:~v0.5.0

配置

添加服务提供者

添加 Hanson\Speedy\SpeedyServiceProvider::class,app.phpproviders

发布资源

php artisan vendor:publish --provider="Hanson\Speedy\SpeedyServiceProvider"

修改配置

Speedy 的配置在 config/speedy.php 中,涉及Model的命名空间以及表名(Speedy 会根据配置生成 Models 以及 Migration)

return [
    'class' => [
        'namespace' => 'App\\Models\\',
        'model' => [
            'role' => 'Role',
            'user' => 'User',
            'permission' => 'Permission',
            'permission_role' => 'PermissionRole',
        ]
    ],

    'table' => [
        'role' => 'role',
        'permission' => 'permission',
        'user' => 'users',
        'permission_role' => 'permission_role',
    ],
    // ...
]

安装 Speedy

php artisan speedy:install
此命令将会

  • 执行 migration
  • 生成 models
  • 执行 seeder , 生成默认的角色 admin
  • 根据 menu 生成 permission
  • web.php 生成相关路由

创建管理员

php artisan speedy:admin admin@email.com --create
或者设置已有用户为管理员
php artisan speedy:admin admin@email.com
(PS: 没错,这里是 voyager 的代码)

也许你想直接用 laravel 自带的 auth

php artisan make:auth
在生成的 LoginController 中, 修改 $redirectTo = '/home'$redirectTo = '/admin'
记得更改 auth.phpproviders
providers['users']['model'] => App\Models\User::class

运行

执行 php artisan serve 后, 访问 http://localhost:8000/admin 开启你的 Speedy 之旅吧

文档

Speedy 比较适合开发一些简单权限的后台,不适合于复杂的权限管理。
在 Speedy 中,一个菜单将会生成一个权限,当一个用户用户这个菜单的权限时,意味着这个用户能够使用该菜单的所有功能。

菜单

通过修改 config/speedy.php 的 menus ,然后执行 php artisan speedy:menu 将自动刷新权限、菜单,并且赋予管理员所有权限。
菜单的属性主要有

  • display 菜单显示名称
  • url 当前菜单URL
  • sub 是否二级菜单,包含着多个子菜单,当设置了此参数时,将会忽略参数 url
  • target 跳转方式,默认当前打开

页面

Speedy 的页面在 resources/views/vendor/speedy 中,在 resources/views/vendor/speedy/layouts/app.blade 中,你可以给一些资源替换一些国内的CDN (使用默认的app.js 以及 app.css 会出现奇怪的问题,例如二级菜单箭头刷不出,JS 报错,然而版本都是一致的)

中间件

Speedy 配有中间件 Hanson\Speedy\Http\Middleware\SpeedyAdminMiddleware 进行权限验证
Controller 可以继承 Hanson\Speedy\Http\Controllers\BaseController , 并重写属性 permissionName 为菜单的key即可验证权限

语言

Speedy 内置了中文语言包,源自

config/app.php 中设置 localezh-cn 即可

resource/lang/zh-cn/view.php 为页面的内容
resource/lang/zh-cn/attribute.php 为表单验证的字段,可参考 config/validator 的key

表单验证

表单验证的 rules 位于 config/validator

Speedy Vs Voyager

Voyager 是一个很出色的 laravel 后台管理包,能够很好的在后台添加所需要的表单,设置其字段,达到不需要敲代码也能完成后台开发工作。但本人觉得 Voyager 有点过于使用资源,导致每个页面都会引入一堆的 CSS 以及 JS,要想去掉也是比较麻烦的事情。路由也比较庞大,也许在高配的开发电脑上体验不到,但在我家用电脑跟公司比较下,差距就放大了很多倍了。

权限思想不一样是两者最大的区别, Speedy 的权限比较特殊,没有细化到某个功能,只有某个模块,非常适合一些小型项目或者对权限要求不复杂的项目。权限并没有直接在管理后台中修改,而是通过修改菜单时才生成权限。只引入了 bootstrap 以及 vue 2 去控制页面,尽最大可能简化页面。

PS:其实一开始,我只是想写个sidebar,没想到写了个后台

本作品采用《CC 协议》,转载必须注明作者和本文链接
❤️ 微信生态自动智能化方案加微信:hansonskr ❤️ 备注:vbot
本帖由 Summer 于 7年前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 38

laravel 5.3中,

$router->aliasMiddleware('speedy.auth', SpeedyAdminMiddleware::class);

使用的aliasMiddleware好像不存在?

7年前 评论

@alexleeyy 感谢,已修复,增加支持laravel 5.*

7年前 评论
Enda
<tbody>
                                @foreach($roles as $role)
                                <tr>
                                    <th scope="row">{{ $role->id }}</th>
                                    <td>{{ $role->name }}</td>
                                    <td>{{ $role->display_name }}</td>
                                    <td>{{ $role->created_at }}</td>
                                    <td>
                                        <a href="{{ route('admin.role.edit', ['id' => $role->id]) }}">{{ trans('view.admin.public.edit') }}</a>
                                        <a href="javascript:;" onclick="document.getElementById('delete-form').action = '{{ route('admin.role.index') . "/{$role->id}" }}'" data-toggle="modal" data-target="#deleteModal">{{ trans('view.admin.public.destroy') }}</a>
                                    </td>
                                </tr>
                                @endforeach
                            </tbody>

没看到 Vue2 用在哪呀

7年前 评论

@Enda sidebar中,没采用前后端分离

7年前 评论
Mantis

php artisan vendor:publish --provider="Hanson\Speedy\SpeedyServiceProvider"

[Symfony\Component\Debug\Exception\FatalThrowableError]
Call to undefined function Hanson\Speedy\resource_path()

是什么情况?Laravel5.1......

file

7年前 评论

@chunlintang 当前release不支持5.1,可以执行
composer require hanson/speedy:~v0.5.0安装

5.2 开始的变动不是一般的大。

7年前 评论

按照文档安装后出现

Call to undefined method Illuminate\Database\Query\Builder::getMenus() (View: /Library/WebServer/Documents/speedy/resources/views/vendor/speedy/layouts/app.blade.php)
7年前 评论

@skys215 你的User model要用生成的User Model,或者用已有的use model 加上 trait permissionTrait

7年前 评论

@skys215 估计你是 auth.php 里面的model没改过来

7年前 评论
PS:其实一开始,我只是想写个sidebar,没想到写了个后台

7年前 评论

@Hanccc 哦哦,现在可以了。好像文档里没有写明这点啊?不管是中文文档还是英文文档。

7年前 评论
记得更改 auth.php 的 providers
providers['users']['model'] => App\Models\User::class

@skys215 这里有写的

7年前 评论

@Hanccc :sweat_smile:我搜的是config/auth.php

还有一个问题,在我这儿会这样:

file

没滚动条,左侧菜单栏也不能隐藏。

我还没碰过生成的代码的说,难道又是我哪里搞错了?

7年前 评论

@skys215 你的屏幕是多少寸的?

7年前 评论

@Hanccc 25寸 2560*1080的,但是我有分屏,浏览器占一半。所以应该是1280*1080。

7年前 评论

@skys215 这是我的前端兼容没做好,但你最大化应该不会了吧,我上面的截图是24寸截图的,正常的效果

7年前 评论

@Hanccc 好的。

最大化确实不会,但是我这屏幕最大化窗口就浪费空间了 :joy:

7年前 评论

@skys215 这个我在2.0的版本会优化一下

7年前 评论

@skys215 或者你会改前端也可以提PR

7年前 评论

首页没有权限判断,普通用户默认不想让访问后台,应该怎么实现

7年前 评论

@丁海军 第一,确认后台是否需要首页

如果需要,可以把默认的去掉,菜单栏增加后台首页,登录默认跳转到后台首页。

如果不需要,直接去掉这个首页即可。

大部分代码都不在vendor中,可以改的比较随心所欲

7年前 评论

@丁海军

如果需要首页,就在菜单栏增加“后台首页”,登录跳转的代码改成根据权限判断跳转即可

如果不需要,直接去掉即可

大部分代码都不在vendor中,改的可以比较随心所欲

7年前 评论

@skys215 自适应的问题最新版本已修复

7年前 评论

5.4 安装后访问/admin 提示,楼主帮忙看看·

1/1 InvalidArgumentException in UrlGenerator.php line 304:
Route [login] not defined.
7年前 评论

@wind 你是没跑 php artisan make:auth

7年前 评论

您好!您这个左侧菜单是没有页面生成的吗?要手动填写数据库吗?我没看见有这个功能呢

6年前 评论

@Hanccc 那个我想生成多一个菜单的话,需要怎么操作呢?O(∩_∩)O谢谢

6年前 评论

设置子菜单后,点击子菜单整个页面刷新,左侧菜单也刷新了。

6年前 评论

@mjgdjh 我1366*786的屏幕,最大化就这样了

5年前 评论

请问这个项目还在维护吗?要写个后台,在 laravel-admin、voyager、Nova 中做选择 ing,好像自定义都比较麻烦

5年前 评论

@陈伯乐 建议使用 laravel-admin

5年前 评论

@Hanson 好的,感谢

5年前 评论

基于 layui 后台 html 模板免费下载 www.yujianni.top/news/comp_artinfo...

3年前 评论

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