{"id":18696677,"url":"https://github.com/dukeann/laradmin","last_synced_at":"2025-04-07T14:14:21.586Z","repository":{"id":56973168,"uuid":"81282968","full_name":"DukeAnn/Laradmin","owner":"DukeAnn","description":"Laradmin后台管理系统","archived":false,"fork":false,"pushed_at":"2022-09-03T03:54:22.000Z","size":48826,"stargazers_count":196,"open_issues_count":2,"forks_count":51,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-03-31T12:07:06.908Z","etag":null,"topics":["admin","admin-dashboard","laravel","laravel-5-package"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DukeAnn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-08T03:24:27.000Z","updated_at":"2024-12-04T06:07:28.000Z","dependencies_parsed_at":"2022-08-21T10:20:33.140Z","dependency_job_id":null,"html_url":"https://github.com/DukeAnn/Laradmin","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DukeAnn%2FLaradmin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DukeAnn%2FLaradmin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DukeAnn%2FLaradmin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DukeAnn%2FLaradmin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DukeAnn","download_url":"https://codeload.github.com/DukeAnn/Laradmin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247666015,"owners_count":20975788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","admin-dashboard","laravel","laravel-5-package"],"created_at":"2024-11-07T11:20:14.626Z","updated_at":"2025-04-07T14:14:21.557Z","avatar_url":"https://github.com/DukeAnn.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"基于laravel5.4的后台管理系统\n===========\n\n必须使用redis缓存，文件和数据库缓存不支持 tags（）\n\nwindows redis 下载地址：http://pan.baidu.com/s/1i56thcD\n\n快速使用 Redis 缓存以及 lv5 中的 Redis 缓存：https://laravel-china.org/topics/877\n\n前端模板请自行购买，如有侵权请联系作者。\n\n使用扩展\n-----\n\n用户权限角色扩展：`zizaco/entrust`\n\nredis扩展：`predis/predis`\n\n菜单选中激活扩展：`hieu-le/active`\n\n数据库扩展：`prettus/l5-repository` 查询返回的数组格式\n\n架构依赖说明：http://oomusou.io/laravel/laravel-architecture/\n\njQuery DataTables API for Laravel：`yajra/laravel-datatables-oracle`\n\n日志读取扩展：`arcanedev/log-viewer`  app日志配置'log' =\u003e env('APP_LOG', 'daily'),\n\n图片处理扩展：`intervention/image`\n\nPHP Redis 扩展\n\nPHP cURL 扩展\n\nPHP OpenSSL 扩展\n\nPHP fileinfo 拓展 素材管理模块需要用到\n\nhttp://datatables.club/\n\nhttps://datatables.yajrabox.com\n\n行内编辑：https://vitalets.github.io/x-editable/docs.html\n\n升级日志\n-----\n\nhttps://github.com/DukeAnn/Laradmin/blob/master/UpdateLog.md\n\n安装方法\n----\n\n1.拉取代码到本地，\n\n2.`composer install`\n\n3.设置 `.evn` 配置文件连接数据库和默认邮件发送服务器，设置`APP_URL=http://laradmin.app`，执行`php artisan key:generate` 生成key。\n\n4.运行迁移和填充\n\n5.`php artisan migrate --seed`\n\n安装完成\n\n演示地址：http://admin.amyair.cn\n\n测试账号：直接右上角注册即可\n\n基本说明\n----\n\n1.权限管理扩展不使用l5数据库扩展。\n\n2.后台左侧菜单自动对应选中状态要求网站全部路由都要命名，并且同一菜单选项下的路由命名前缀一致，\n比如：`admin.index`,`admin.create`,`admin.show`,`admin.edit`等，资源型路由自动命名。 \n后台左侧菜单上显示的都是index结尾的路由名。程序定向跳转时使用 `route();`。\n顶级菜单下子分类的权限如果都被禁止了，请添加顶级菜单的用户权限，并设置成用户无权限，就不在显示该菜单。\n后台菜单显示原理，通过菜单uri查询用户权限，如果设置了该权限，进行验证是否有权限，没有就不显示，如果没设置就默认无权限要求。\n有子类的菜单项设置的uri不会输出在html中，只会输出一个JavaScript:;所以设置成不存在的路由名也不会报错，无子菜单的uri会用route()函数解析，\n如果路由名不存在会报错。\n\n3.页面内面包屑写入语言包，语言包中名称对应`Route::currentRouteName();`的值（路由名称），靠服务注入生成面包屑`App\\Presenters\\Admin\\CrumbsService`，语言包中没定义的直接显示语言包的健值。\n\n4.路由不可以用闭包路由，路由必须命名否则`Route::currentRouteName();`无法生效，并且权限验证和菜单跳转全部使用的都是路由名称。\n\n5.权限认证使用权限绑定路由名在`app/Http/Middleware/CheckPermission.php`中间件中验证，表单提交权限放在`app/Http/Requests`中验证，如果路由名未绑定权限将不做权限限制。\n\n6.后台添加菜单时不允许添加为存在的路由名称，否则网站会崩掉。因为添加完菜单就会在左侧显示，但是路由名不存在就无法解析导致报错。如果不小心写错，要执行 `php artisan cache:clear` 清除缓存，并删除数据库中插入的错误数据！刷新页面即可。\n\n###json格式通用于API\n``` json\n{\n    \"code\": 0,\n    \"url\": http://...\n    \"message\": \"...\",\n    \"errors\": [\n        {\n            \"code\": 10000,\n            \"field\": \"user\",\n            \"message\": \"用户 不存在。\"\n        }\n    ],\n    \"pagination\": {\n        \"total\": 10,\n        \"per_page\": 10,\n        \"current_page\": 1,\n        \"last_page\": 1,\n        \"from\": 1,\n        \"to\": 10\n    },\n    \"data\": {\n        ...\n    }\n}\n```\n####json返回值说明\n`code`处理结果状态码，成功为 0，必填\n\n`url`处理成功之后的跳转地址，可不填\n\n`message`处理完成的通知信息，可不填\n\n`errors`请求报错信息\n\n`pagination`请求的分页信息\n\n`data`请求的数据信息\n\n`errors`和`data`不能同时存在\n\n返回使用\n\n`return response(['code' =\u003e -1, 'message' =\u003e '账号或者密码错误'], 400);` 自动转换成json\n\n或者\n\n`return response()-\u003ejson(['code' =\u003e -1, 'message' =\u003e '账号或者密码错误'], 400);`\n\nAJAX解析\n``` javascript\nvar settings = {\n        type: \"POST\",\n        data:{},\n        url: url,\n        dataType: \"json\",\n        success: function (data) {\n            if (data.code == 0) {\n                window.location.href = data.url;\n            }\n        },\n        error: function (XMLHttpRequest) {\n            $('#login-error').show();\n            if (XMLHttpRequest.responseJSON.code == -1){\n                $('#login-error-message').text(XMLHttpRequest.responseJSON.message);\n            } else {\n                $('#login-error-message').text(\"请填写邮箱和密码\");\n            }\n        },\n        headers: {\n            'X-CSRF-TOKEN': $('meta[name=\"csrf-token\"]').attr('content')\n        }\n    };\n    $.ajax(settings)\n```\n\n数据库模型创建命令\n----\n\n`php artisan make:entity name`，自动创建模型文件，数据库迁移文件，Repository下面的两个文件，Providers文件，可选生成Presenter,Validator,Controller文件\n\n`php artisan make:repository name`，生成模型文件，数据库迁移文件，Repository下面的两个文件\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdukeann%2Flaradmin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdukeann%2Flaradmin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdukeann%2Flaradmin/lists"}