munkh-altai / table-manager
用于 Laravel 的表格管理器
Requires
- php: ^5.3.3 || ^7.0
- intervention/image: ^2.3@dev
This package is auto-updated.
Last update: 2024-09-28 18:58:33 UTC
README
安装
【安装指南】(https://github.com/munkh-altai/table-manager#installation-guide)
示例
【示例示例】(https://github.com/munkh-altai/table-manager#sample-example-Хэлний-хүснэгтийг-удирдах-жишээ),【示例示例与翻译】(https://github.com/munkh-altai/table-manager#sample-example-with-transltation-Орчуулгийн-хүснэгтийг-удирдах-жишээ)
主要特性
- 【配置】(https://github.com/munkh-altai/table-manager#configration)
- 【翻译和静态词】(https://github.com/munkh-altai/table-manager#translation--static-words)
网格特性
- 动态网格
- 网格中的固定行和列
- 类似 Excel 的自动计算
- 响应式
- 网格权限 CRUD
- 网格列类型:图像、链接、内部链接...
- 【在网格行中更改枚举列的值】(https://github.com/munkh-altai/table-manager#change-enum-columns-value-in-grid-row)
- 内联添加和编辑
- 翻译
- 【CRUD 权限】(https://github.com/munkh-altai/table-manager#crud-permission)
- 排序
- 页面名称
- 创建时间
- 更新时间
- 条件语句
- 导出 CSV 文件(Excel)
- 重新加载模块
- 更改语言
- 显示和隐藏网格列
- 调整列宽和行高
- 排序
- 搜索
- 过滤列
- 内联表单验证
- 分页
- 更改每页项目数
- 计算总项目数
- 计算总页数
- 【删除前】(https://github.com/munkh-altai/table-manager#before-delete)
表单特性
- 动态表单
- 【根据其他元素的值显示和隐藏】(https://github.com/munkh-altai/table-manager#show-and-hide-by-other-elements-value)
- 【插入前】(https://github.com/munkh-altai/table-manager#before-insert)
- 【支持多元素类型】(https://github.com/munkh-altai/table-manager#support-multi-element-types)
- 翻译
- 验证(必需、最大、最小、数字、电子邮件、唯一、密码确认)
- 保存后消息
- 自定义保存后消息
- 分组元素
- 从网格权限禁用元素
- 子项目支持
- 一次性多插入
- 焦点索引
- 如果更新禁用,则可以通过其他元素值编辑列
- 密码更改模式
安装指南
- 安装
composer require munkh-altai/table-manager
- 在 config/app.php 的 $providers 数组中添加此包的服务提供者。
TableManager\TableManagerServiceProvider::class,
- 在 config/app.php 的 $aliases 数组中添加此包的 facade。
'TableManager' => TableManager\Facade\TableManager::class,
-
composer du
-
发布配置
php artisan vendor:publish --tag=tm-config
- 设置您的路由
Route::get('/{slug}/', 'AdminController@TableManager'); Route::post('/{slug}/{action}', 'AdminController@TableManager');
- 在控制器中使用部分添加模块名称
use TableManager\TableManager;
- 使用CSS和JavaScript创建表格属性视图
CSS
@if(Config::get('table-manager.debug')) <link rel="stylesheet" href="https://:3000/css/tm.css" type="text/css"/> @else <link rel="stylesheet" href="{{ URL::asset('shared/table-manager/css/tm.css') }}" type="text/css"/> @endif
app div
<div id="solar-tp"></div> <script> window.setup = {!! json_encode($setup) !!}; </script> @if($setup['googleMap'] == true) <script src="https://maps.googleapis.com/maps/api/js"></script> @endif
JavaScript
<script type="text/javascript" charset="utf-8" src="{{ URL::asset('shared/ckeditor/ckeditor.js')}}"></script> @if(Config::get('tp_config.tp_debug')) <script src="https://:3000/js/dependencies.js"></script> <script src="https://:3000/js/tm.js"></script> @else <script type="text/javascript" charset="utf-8" src="{{ URL::asset('shared/table-manager/js/dependencies.js')}}"></script> <script type="text/javascript" charset="utf-8" src="{{ URL::asset('shared/table-manager/js/tm.js')}}"></script> @endif
- 在控制器中最后一次添加functon函数
public function TableProperties($slug, $action = 'index') { if (!method_exists($this, $slug)) abort(503); else return $this->$slug($action); }
- 创建CRUD功能
public function users($action) { $tm = new TableManager(); $tm->viewName = 'table-manager'; $tm->table = 'users'; $tm->page_name = 'Хэрэглэгч'; $tm->identity_name = 'id'; $tm->grid_columns = [ 'users.name', 'users.email', 'users.id']; $tm->grid_default_order_by = 'users.id DESC'; $tm->formType = 'page'; $tm->created_at = 'created_at'; $tm->updated_at = 'updated_at'; $tm->where_condition = []; $tm->grid_output_control = [ ['column' => 'name', 'title' => 'Нэр', 'type' => '--text', 'fixed' => false], ['column' => 'email', 'title' => 'И-мэйл', 'type' => '--text', 'fixed' => false], ]; $tm->form_input_control = [ ['column' => 'name', 'title' => 'Нэр', 'type' => '--text', 'value' => null, 'validate' => 'required'], ['column' => 'email', 'title' => 'И-мэйл', 'type' => '--text', 'value' => null, 'validate' => 'required|email|unique:users,email,NULL,' . $tm->identity_name], ]; return $tm->run($action); }
配置
模块发布后,在Laravel框架的"config"文件夹中创建名为"tp_config.php"的配置文件。
配置列表,配置列表
- 表单和网格按钮的文本
- 调试模式控制
- 默认地区
- 地区表格
- 静态词表格
翻译和静态词
为了在网格和表单上使用翻译功能,需要提供语言的字符集信息。
solar_locales表格的列(id,code,language,flag)
此外,为了在用户界面中使用i18标准JSON和Laravel特定的翻译文件,可以生成solar_static_words表格的列(id,key,translation)。
网格特性
在网格行中更改枚举列的值
在网格显示的行中,可以通过列的值来关联并显示不同的文本。例如
$tp->form_input_control = [ ['column'=>'is_buleg', 'title'=>'Бүлэг эсэх', 'type'=>'--text', 'change_value'=>[ ['value'=>0, 'text'=>'Үгүй'], ['value'=>1, 'text'=>'Тийм'], ] ], ];
CRUD权限
为模块授权。默认
$tp->permission = ['c'=>true, 'r'=>true, 'u'=>true, 'd'=>true];
删除前
在删除网格行之前执行的操作。例如
$tp->before_delete = [ 'controller'=>'App\Http\Controllers\AdminController', 'function'=>'beforeDeleteAanSalbar' ]; //exmample before delete function public function beforeDeleteAanSalbar($id){ $userid = DB::table('aan')->select('user_id')->where('ID', '=', $id)->pluck('user_id'); DB::table('users')->where('id', '=', $userid)->delete(); }
表单特性
根据其他元素的值显示和隐藏
根据其他元素的值显示或隐藏。这个选项可以通过元素值来显示或隐藏特定元素。在表单的列内部执行此操作时,'show'=>[['is_baiguullaga'=>0]]表示在何种条件下显示。例如
$tp->form_input_control = [ ['column'=>'is_baiguullaga', 'title'=>'Ажил олгогчийн төрөл', 'type'=>'--radio', 'value'=>0, 'choices'=>[ ['value'=>0, 'text'=>'Аж ахуйн нэгж, байгууллага'], ['value'=>1, 'text'=>'Иргэн'], ], 'validate'=>'required'], ['column'=>'omch_huvi', 'title'=>'Өмчийн хувь', 'type'=>'--number', 'value'=>null, 'validate'=>'required' , 'show'=>[['is_baiguullaga'=>0]]], ];
插入前
在保存表单信息之前或添加信息时,可以选择一个Controller函数来修改或添加信息。例如
$tp->before_insert = [ 'controller'=>'App\Http\Controllers\AdminController', 'function'=>'beforeInsertUser', 'arguments'=>[] ]; //exmample before insert function public function beforeInsertUser($data){ $insert_values = $data['insert_values']; $user = []; $pass = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 8); $toMail = $insert_values['email']; Mail::send('mail.register', ['password'=>$pass, 'email'=>$toMail], function($message) use ($toMail) { $message->to($toMail); $message->subject('Нэвтрэх нууц үг'); }); return ['password'=>bcrypt($pass)]; }
支持多元素类型
- --text
- --number
- --money
- --link
- --textarea
- --disabled
- --ckeditor
- --drag-map(通过拖动箭头在Google地图上选择位置)
- --single-file
- --multi-file
- --date
- --datetime
- --time
- --combogrid
- --combobox
- --combobox-addable
- --tag
- --checkbox
- --radio
- --password
- --password-confirm
- --auto-calculate(求和、乘法、减法)
示例,管理语言包的示例
public function locales ($action){ $tp = new Tp(); $tp->viewName = 'admin._pages.options'; $tp->table = 'solar_locales'; $tp->page_name = 'Хэл'; $tp->identity_name = 'id'; $tp->grid_default_order_by = 'id DESC'; $tp->grid_columns = ['code', 'language', 'flag', 'id']; $tp->grid_output_control = [ ['column'=>'code', 'title'=>'Улсын код', 'type'=>'--text'], ['column'=>'language', 'title'=>'Хэл', 'type'=>'--text'], ['column'=>'flag', 'title'=>'Туг', 'type'=>'--text'], ]; $tp->form_input_control = [ ['column'=>'code', 'title'=>'Улсын код', 'type'=>'--text', 'value'=>null, 'validate'=>'required'], ['column'=>'language', 'title'=>'Хэл', 'type'=>'--text', 'value'=>null, 'validate'=>'required'], ['column'=>'flag', 'title'=>'Туг', 'type'=>'--text', 'value'=>null, 'validate'=>'required'], ]; $tp->formType = 'page'; return $tp->run($action); }
带有翻译的示例,管理翻译表格的示例
function staticWords($action){ $tp = new Tp(); $tp->viewName = 'admin._pages.options';; $tp->table = 'solar_static_words'; $tp->page_name = 'Статик үгсийн сан'; $tp->identity_name = 'id'; $tp->grid_default_order_by = 'id DESC'; $tp->grid_columns = ['key', 'translation', 'id']; $tp->generateLocaleFile = true; $tp->grid_output_control = [ ['column' => 'key', 'title' => 'Түлхүүр үг', 'type' => '--text'], ['column' => 'translation', 'title' => 'Орчуулга', 'type' => '--text', 'translate' =>true], ]; $tp->form_input_control = [ ['column' => 'key', 'title' => 'Түлхүүр үг', 'type' => '--text', 'value' => null, 'validate' => 'required'], ]; $tp->translate_form_input_control = [ ['column' => 'translation', 'title' => 'Орчуулга', 'type' => '--text', 'value' => null, 'validate' => 'required'], ]; $tp->formType = 'page'; return $tp->run($action); }