同步操作将从 thinkpanax/laravel_layui 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.
集成了,图片上传,多图上传,批量Excel导入,批量插入,修改,添加,搜索,权限管理RBAC,验证码,插件一个综合完善后台,助你开发快人一步。 准许协议MIT,允许你修改和包装,但需要注明版权。
利用laravel框架,打造一款快速开发后台操作,内置了RBAC权限管理,集成了列表api,批量删除,批量增加,Excel批量导入,排序,列表编辑,图片上传,图片多图上传,编辑器,插件安装等。
第一步:拉取代码
git clone
第二步:安装框架依赖
composer install
第三步:创建一个数据库,utf8mb4字符集
第四步:本地创建网站应用,绑定到网站目录/public下
第五步:重写 nginx 重写
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
apache 重写,默认public已经有了,可忽略
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
第六步拷贝您的.env,或者新建一个,参考内容如下
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:Fv0e0XTllfQQSWXfHbxd/lrqLlH9FCt41hRNLUAEpRo=
APP_DEBUG=1
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=1
DB_USERNAME=root
DB_PASSWORD=123456
DB_PREFIX=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=6379
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
LANG=zh-CN
KONGQI_SERVER=eyJob3N0Ijoid3d3LjIwMTlsdi5jb20iLCJpcCI6IjEyNy4wLjAuMSIsInBvcnQiOiI4MCJ9
DEBUGBAR_ENABLED=false
#调试debug显示,有时候线上调试,不想暴露一条工具条,单独设置
APP_DEBUG_TOOLS=1
#后台绑定域名
ADMIN_URL=
#前端地址,只用于后台快速点击跳转快捷键
FRONT_URL=http://www.bbs.com
#上传是否开启补齐域名
IMG_HTTP=1
#图片、文件资源地址
IMG_HTTP_URL=
第七步:打开你的网站/admin/即可,自动判断进行安装
http://www.xx.com/admin
在线安装在第三步的时候,如果出现没有提示,请再次输入即可。
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `password_resets` add index `password_resets_email_index`(`email`))
说明数据库不支持那么长的索引,需要修改,索引我这里已经修复了那个密码重设的索引问题
Schema::create('password_resets', function (Blueprint $table) {
$table->string('email')->index('email');//这里哦,给他个名字,他默认是表名加字段名字
$table->string('token');
$table->timestamp('created_at')->nullable();
});
如果还出现检查下你的数据库子集,是否是uft8mb4格式哦。不然会有问题。 安装完成
除了本身是laravel框架的文件,就不说明了。自行查阅文档
app/Plugin/AdminBaseController.php 插件后台继承基本控制器
app/Plugin/AdminCurlController.php 插件后台继承增删改查控制器
app/Plugin/FrontBaseController.php 插件前台基本控制器
app/Plugin/PluginController.php 插件基本控制器
app/Plugin/Vote/
app/Plugin/Vote/Admin/ 后台控制器存放目录
app/Plugin/Vote/adminRoute.php 后台路由
app/Plugin/Vote/config.php 插件安装配置文件,固定格式
app/Plugin/Vote/Front/ 前台控制器存放目录
app/Plugin/Vote/frontRoute.php 前台路由文件
app/Plugin/Vote/helper.php 帮助函数文件
app/Plugin/Vote/Kernel.php 自定义中间件配置文件
app/Plugin/Vote/Middleware/ 中间件存放目录
app/Plugin/Vote/Migrations/ 安装数据库相关文件目录
app/Plugin/Vote/Models/ 插件模型存放目录
app/Services/DateServices.php 日期封装类
app/Services/SearchServices.php 搜索封装类
app/Services//WeiXinServices.php 微信相关封装类
app/TraitClass/ApiTrait.php 接口输出格式trait类
app/TraitClass/BladeTrait.php 视图输出格式trait类
app/TraitClass/ModelCurlTrait.php 增删改查接口输出格式trait类
app/TraitClass/QueryWhereTrait.php 搜索查询的trait类
app/TraitClass/RouteTrait.php 路由信息的trait类
app/TraitClass/SearchScopeTrait.php 搜索范围的trait类
app/TraitClass/TreeTrait.php 树形 trait类
app/ExtendClass/AnyUpload.php 任意上传类
app/ExtendClass/UploadFile.php 上传配置和初始化
app/Facades/AnyUpload.php
app/Facades/PhpTree.php
app/Providers/BladeServiceProvider.php 自定义blade模板指令
public/static/admin 后台模板文件目录
public/static/install 安装样式目录
public/static/js 公用的JS文件目录
public/static/layui 框架目录
public/static/themify-icons 字体目录
public/plugin
例如Vote这个插件,那么对应
public/plugin/vote
生成一个控制器文件,自己创建一个也可以,
php artisan make:controller Admin\TextController
继承基本控制器
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
class TextController extends BaseDefaultController
{
//
}
设置绑定对应要操作模型类
# 例如我这里操作管理员
<?php
namespace App\Http\Controllers\Admin;
use App\Models\Admin;
use Illuminate\Http\Request;
class TextController extends BaseDefaultController
{
//绑定操作的模型
public function setModel()
{
return $this->model=new Admin();
}
//表单添加需要验证规则
/**
* 表单验证规则
* @param string $id 存在的时候表示更新
* @return array
*/
public function checkRule($id = '')
{
if (!$id) {
return [
'password' => 'required',
'account' => 'required',
];
}
return [
'account' => 'required',
];
}
//如果我们这个字段对应的验证没有翻译到,那么可以编写如下进行对应,这样如果账号没有必填,就会提示账号了
public function checkRuleField()
{
return [
'password' => '密码',
'account' => '账号',
];
}
}
这样就可以完成基本的简单的增删改查的控制器,当然现在还没完成,需要绑定路由
修改route/admin.php
$resource = [
'AdminController',
'AdminRoleController',
'AdminPermissionController',
'CategoryController',
'PluginController'
];
末尾增加刚才TextController
$resource = [
'AdminController',
'AdminRoleController',
'AdminPermissionController',
'CategoryController',
'PluginController',
'TextController'
];
路由加完了。那么左侧菜单也需要增加一下config/admin_menu.php
,照着里面格式加一个即可。
这样就完成了一个后台的功能了。 这样首页,添加,修改,编辑,都已经全部写好了,具体的功能,查阅文件,都有说明,不一一讲。
//首页需要输出到模板里面的数据,返回数组
public function indexData()
{
return ['hello'=>'你好'];//那样前端首页模板,就可以用{{ $hello }}这个变量取值
}
//添加和修改共享数据,返回数组,$show不为空时,表示修改,那么$show就是这个的编辑的实例查询数据
public function createEditData($show = '')
{
return ['navs'=>[['id'=>'1','name'=>'熊猫'],['id'=>'2','name'=>'老虎']]];//那么在编辑和输出,可以使用变量{{ $nav }}
}
//如果你需要去掉默认的编辑和删除按钮,就在这里面重写,最后要返回$item
public function apiJsonItem($item)
{
$item->hello='你好';//首页输出字段就会多了个hello
return $item;
}
//如果不需要去除”编辑和删除按钮“,那么就在里面重写列表输出的字段内容。需要返回$item
public function apiJsonItemExtend($item)
{
$item->hello='你好';//首页输出字段就会多了个hello
return $item;
}
//模型这个操作完之后,你还需要做的事情,可以在里面写,例如我更新缓存,更新日志等
public function afterSave($model, $id = '')
{
}
//创建,更新之前需要干的事情
protected function beforeSave($model, $id = '')
{
}
//开启事务,如果表单存在字段['begin_db'=>1]表示开启事务,或者是直接修改beginDb,返回1也表示开启,开启事务之后,afterSave就必须返回真才能正确提交
/**
* 是否开启事务
* @return bool 真表示开启
*/
protected function beginDb($data, $id = '')
{
return isset($data['begin_db']) ? $data['begin_db'] : 0;
}
app/Http/Helper.php
//静态资源加载
function ___($path)
{
return asset('/static/' . $path);
}
/**
* 插件样式
* @param $path
* @return string
*/
function plugin_res($path)
{
return asset('/plugin/' . $path);
}
其他的自行查阅
route/admin.php
默认前缀是"admin."
例如管理员
admin.admin.index
插件路由命名
admin.plugin.vote.vote.index
admin.plugin.这个是固定,vote是插件名字,后面才是控制器对应的路由名字
插件前端命名
plugin.vote.vote.index
plugin.是固定形式前缀。vote是插件名字,后面才是控制器对应的路由名字
\public\static\admin\modules\,所有的模块默认在这里,
引入的时候,都需要先调用index这个模块
layui.use(['index'], function () {
})
重点模块我进行了封装
custorm.js 自定义JS内容
treetable.js 进行更改过
layerOpen.js 弹窗模块
uploader.js 上传模块
request.js 请求模块ajax
12年毕业,7年开发经验,10年接触编程,全职在家做技术支持。
感谢laravel,Layui,Jquery
MIT协议
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。