munkh-altai/table-manager

用于 Laravel 的表格管理器

1.0.4 2017-06-11 10:52 UTC

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-Орчуулгийн-хүснэгтийг-удирдах-жишээ)

主要特性

网格特性

表单特性

安装指南

  1. 安装
composer require munkh-altai/table-manager
  1. 在 config/app.php 的 $providers 数组中添加此包的服务提供者。
TableManager\TableManagerServiceProvider::class,
  1. 在 config/app.php 的 $aliases 数组中添加此包的 facade。
'TableManager' => TableManager\Facade\TableManager::class,
  1. composer du

  2. 发布配置

php artisan vendor:publish --tag=tm-config
  1. 设置您的路由
    Route::get('/{slug}/', 'AdminController@TableManager');
    Route::post('/{slug}/{action}', 'AdminController@TableManager');
  1. 在控制器中使用部分添加模块名称
use TableManager\TableManager;
  1. 使用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
  1. 在控制器中最后一次添加functon函数
 public function TableProperties($slug, $action = 'index') {

        if (!method_exists($this, $slug))
        abort(503);
         else
            return $this->$slug($action);

    }
  1. 创建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)。

(翻译表格管理示例)(https://github.com/munkh-altai/table-manager#sample-example-with-transltation-%D0%9E%D1%80%D1%87%D1%83%D1%83%D0%BB%D0%B3%D0%B8%D0%B9%D0%BD-%D1%85%D2%AF%D1%81%D0%BD%D1%8E%D0%B3%D1%82%D0%B8%D0%B9%D0%B3-%D1%83%D0%B4%D0%B8%D1%80%D0%B4%D0%B0%D1%85-%D0%B6%D0%B8%D1%88%D1%8D%D1%8E)

网格特性

在网格行中更改枚举列的值

在网格显示的行中,可以通过列的值来关联并显示不同的文本。例如

$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
  • --email
  • --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);

    }