Skip to content
dengyongbin edited this page Jan 18, 2017 · 21 revisions

快速开发配置文件文档

语言

默认app.php配置文件中的locale=en,如果需要使用中文的提示,需要把locale改为zh

路由匹配规则支持2种方式;

1、路由名称的规则:使用resource的情况下,laravel会默认为每个route都设置routeName,控制器会通过该routeName来查找对应generals下的配置文件;

2、路由path的规则:在不使用resource的情况下,也没有设置route的name情况下,控制器会读取route的path值来查询对应generals下得配置文件;(以前一直都是使用的该方式)

针对第一种配置方式,可以实现相同模块配置文件复用的问题,比如orderReview、orderPass、可以配置在一个文件中,只修改部分不同的配置定义;

Model对象(必填)

'model_class' => 'App\Models\Test',
'model_name' => '测试',

查询页面

'query' => array(
        // 默认type=input,默认operator为=
        ['name' => 'ID', 'column' => 'id'],
        // 当operator=like时模糊搜索,默认为精确搜索
        ['name' => '名称', 'column' => 'name', 'operator' => 'like'],
        // 下拉框控件,param接受枚举的key,并自动添加空value的全部选项
        ['name' => '状态', 'column' => 'status', 'type' => 'selector', 'param' => 'online_offline_status'],
        // 多选框控件,param接受枚举的key
        ['name' => '标签类型', 'column' => 'type', 'type' => 'checkbox', 'param' => 'normal_disable_status'],
        // 日期段控件,format格式化日期控件参数:c-20表示20年前,c+1表示1年后
        ['name' => '创建时间', 'column' => 'created_at', 'type' => 'date', 'operator' => 'between', 'format' => ['yearRange' => 'c-20:c+1']],
        // 日期控件
        ['name' => '更新时间', 'column' => 'created_at', 'type' => 'date'],
    ),

列表页面

显示字段(必填)
// 单表查询
'index_column' => array('id', 'name', 'status'),
// 多表查询,user为模型中定义的方法,email为user对象的属性
'index_column' => array('id', 'name', 'status', 'user.email'),
显示名称(默认读取表字段的comment)
'index_column_name' => array('ID', '名称', '状态'),
多表关联
'index_multi_join' => array(
        ['users', 'tests.user_id', '=', 'users.id'],
        ['roles', 'tests.role_id', '=', 'roles.id'],
),
多表关联字段
'index_multi_column' => array('user_id', 'users.name as user_name', 'tests.name', 'roles.name as role_name'),

显示字段自定义

'index_column_rename' => array(
   // 枚举映射
   'name' => array(
      'type' => 'selector',
      'param' => 'test_selector'
   ),
   // 不同值显示不同样式
   'status' => array(
      'type' => 'normal',
      'param' => array(
         0 => '<span class="label label-default">未启用</span>',
         1 => '<span class="label label-success">已启用</span>',
      )
    ),
    // 模态框
    'id' => array(
       'type' => 'dialog',
       'param' => array(
          // a标签name名称
          'name' => 'test_btn',
          //模态框名称
          'target' => 'test_dialog',
          //模态框标题
          'dialog_title' => 'Modal',
          //模态框路由,结尾的'/'不能省略,url后会传递id值,路由需配置
          'url' => '/admin/test/detail/',
          // id参数在列表中的索引位置,从0开始
          'index' => 3,
          'width' => '80%'
        )
    ),
    // html样式替换
    'avatar' => array(
       'type' => 'html',
       // 图片样式(如果图片需要自定义样式则使用该方法,否则请用图片类型实现)
       'param' => '<a href="%s" target="_blank"><img style="width:50px;height:50px" src="%s" alt=""></a>',
       // 链接样式
       //'param' => '<a href="%s" target="_blank" title="%s">点击查看</a>',
    ),
    'title' => array(
       'type' => 'limit',
       'param' => '50'
     ),
    // 单张图片处理
    'image' => array('type' => 'image'),
    // 多张图片处理
    'images' => array('type' => 'images'),
),
可供使用的样式代码

显示字段格式化(索引从0开始)
'index_column_format' => array(
    // 金额格式化,建议不使用,在Model中get时/100
    array('column' => 3, 'type' => 'amount'),
    // 日期格式化
    array('column' => 8, 'type' => 'date', 'format' => 'Y-m-d H:i'),
    // 自定义函数格式化字段值
    array('column' => 5, 'type' => 'function', 'value' => function ($value) {
            return strtotime($value) > time() ? $value : $value . '已结束';
    }),
),
列表排序(delete,请勿使用)
'sort' => array(['created_at', 'desc'], ['test_time', 'desc']),
表格自定义宽度
// key为每列在表格中得索引,从0开始;value为宽度,可以是百分比,或者其他px单位;未配置的列会自动计算内容分配宽度;
'table_column_width' => array(
        2 => '30%',
        3 => '20%',
    ),
表格列排序配置
// 需要显示排序的列就配置为true,不需要排序的列不用配置,默认没有排序列功能
'table_sort' => array(
        'id' => true,
        'created_at' => true,
    ),
// 默认排序配置
'table_order' => array(
        0 => 'desc',
        5 => 'asc',
    ),
列表条件
'index_where' => array(
   array('column' => 'news_type', 'operator' => '=', 'value' => 2),
   array('column' => 'news_type', 'operator' => 'whereIn', 'value' => [1,2]),
   array('column' => 'news_type', 'operator' => 'whereNotIn', 'value' => [1,2]),
   array('column' => 'news_type', 'operator' => 'whereBetween', 'value' => [1,2]),
   array('column' => 'news_type', 'operator' => 'whereNotBetween', 'value' => [1,2]),
   array('column' => 'news_type', 'operator' => 'whereNull'),
   array('column' => 'news_type', 'operator' => 'whereNotNull'),
),

编辑页面

显示字段
'edit_column' => array('name', 'title', 'publish_time', 'test_time'),
显示名称(默认读取表字段的comment)
'edit_column_name' => array('名称', '标题', '发布日期', '测试日期'),
控件类型
'edit_column_detail' => array(
   // 下拉控件[style:select|select2]
   'name' => array(
      'type' => 'selector',
      'selector_key' => 'test_selector',
      'style' => 'select',
      'validator' => array('required' => true)
   ),
   // 默认input输入框
   'title' => array('validator' => array('required' => true)),
   // 密码控件,如果需要在编辑页面不设置该密码控件,可使用'disabled' => true来控制
   'password' => array('type' => 'password', 'validator' => array('required' => true), 'disabled' => true),
   // 日期控件
   'publish_time' => array(
      'type' => 'date',
      'default_value' => 'now',
      'date_picker' => array(
         'dateFormat' => 'yy-mm-dd',
         'yearRange' => '-10:+10',
         'minDate' => '-2',
         'maxDate' => '+2',
       ),
       'validator' => array('required' => true)
   ),
   // 时间控件
   'test_time' => array(
      'type' => 'time',
      'validator' => array('required' => true)),
    ),
   // 编辑器控件(编辑器额外需要引入模板,在外层配置:'edit_editor' => true,编辑器控件才生效)
   // toolbars自定义工具参考:[http://fex.baidu.com/ueditor/#start-toolbar]
   'summary' => array(
      'type' => 'editor'
      'language' => true,
      'toolbars' => ['fullscreen', 'source', 'undo', 'redo', 'bold']
    ),
   // 图片控件
   'image' => array(
      'type' => 'image',
      'name' => 'image',
      'min_count' => 1,
      'max_count' => 1,
      'min_error_msg' => '至少上传%s张图片',
      'max_error_msg' => '最多只允许上传%s张图片',
      'editable' => true
   ),
   // 多语言
   'name' => array(
      'type' => 'language',
   ),
   // 多标签控件(字段接受用逗号拼接的字符串)
   'name' => array(
      'type' => 'tagsinput',
      'style' => 'tags'
   ),
   // 多选控件
   'name' => array(
       'type' => 'checkbox',
       'value' => ['1' => 'a', '2' => 'b', '3' => 'c'],
   ),
),
隐藏元素
'edit_hidden' => array(
   array('name' => 'news_type', 'value' => 2),
   array('name' => 'language_hidden', 'value' => 'name,title'),
   // 当隐藏元素只需要在创建或者更新时才存在,可设置action=create|edit,默认不设置action
   // 需要获取当前后台登陆管理员id,可以设置admin_id=true
   array('name' => 'created_by', 'admin_id' => true, 'action' => 'create'),
   array('name' => 'updated_by', 'admin_id' => true, 'action' => 'edit'),
),
业务账号隐藏值关联
'edit_hidden_business_id' => array(
   'name' => 'store_id',
),
编辑页面跳转地址
'edit_redirect_location' => '/admin/store/{id}/edit',
页面跳转
'edit_redirect_location' => '/admin/store/edit',

详情页面

显示字段
// user.email 支持model中定义的关联对象
'detail_column' => ['id', 'name', 'title',  'status', 'created_at', 'user.email'],
显示名称(默认读取表字段的comment)
'detail_column_name' => array('ID', '名称', '标题', '状态', '创建时间'),
多表关联(废弃,请勿使用)
'detail_multi_join' => array(
   ['users', 'users.id', '=', 'feedbacks.account_id'],
),
多表关联字段
'detail_multi_column' => array(
   'users.email as email', 'feedbacks.*'
),
控件类型
'detail_column_rename' => array(
   // 金额
   'amount' => ['type' => 'amount'],
   // 图片
   'image' => ['type' => 'image'],
   // 重命名
   'status' => [
      'type' => 'normal',
      'param' => [
         '0' => '<span class="label-default status">未上线</span>',
         '1' => '<span class="label-success status">已上线</span>'
      ]
   ],
   // 下拉枚举
   'type' => [
      'type' => 'selector',
      'param' => 'test_type'
   ],
   // 日期
   'created_at' => [
      'type' => 'date',
      'format' => 'Y-m-d H:i'
   ],
   // html
   'title' => [
      'type' => 'html'
   ],
   // 多语言
   'name' => [
      'type' => 'language'
   ],
),

操作按钮

增删改查(不配置时,系统默认为true)
'curd_action' => array(
   'create' => false,
   'edit' => false,
   'detail' => false,
   'delete' => false,
   // 全表数据导出excel,定义指定route到GeneralController@tableExportExcel
   'table_export_excel' => true,
),
// 禁用权限检查
'disable_permission' => true,
操作功能
// 按钮排列布局,默认不填写的话是按钮下拉样式
'table_action_line' => true,

// 按钮配置
'table_action' => array(
   // 状态变更    
   array(
     'type' => 'confirm',
     'name' => 'enabled_btn',
     'display_name' => '启用',
     'permission' => 'admin.test.changeStatus.enabled',
     'url' => '/admin/test/changeStatus',
     'data' => array('status' => 1, 'publish_time' => 'now', 'admin_id' => 'admin_id'),
     'where' => array('status' => [0, 1]),
   ),
   // 操作自定义
   array(
        'type' => 'redirect_with_id',
        'name' => 'add_topic',
        'display_name' => '添加话题',
        'method' => 'get',
        'url' => '/admin/account/addTopic'
   ),
   // 带自定义参数的配置,外部需配置额外2个属性
   'table_action' => array(
        array(
            'type' => 'redirect_with_id',
            'name' => 'city_index',
            'display_name' => '市区域管理',
            'method' => 'get',
            'url' => '/admin/area/{custom_id}/city'
        ),
    ),
   // 模态框
   array(
     'type' => 'dialog',
     'name' => 'edit_permission',
     'target' => 'edit_permission',
     'dialog_title' => '分配权限',
     'display_name' => '分配权限',
     'url' => '/admin/roles/permissions/',
     'form' => array(
        'form_id' => 'smart-form-permissions',
        'submit_id' => 'confirmPermission',
        'success_msg' => '分配权限成功,重新登陆后即可更新左侧菜单栏',
        'failure_msg' => '分配失败'
     ),
   ),
),

操作功能的自定义列表配置

'custom_id_relation_column' => 'parent_id',
'custom_id_back_url' => '/admin/area',