这是我写的学习EasyAdmin的第五章,这一章我给大家分享下列表调用搜索的相关知识,并记录说明下开发时碰到的常见问题
首先说明下如何在页面中调用layui的搜索,效果如下:
代码如下:
define(["jquery", "easy-admin"], function ($, ea) { var init = { table_elem: '#currentTable', table_render_id: 'currentTableRenderId', index_url: 'mall.cate/index', add_url: 'mall.cate/add', edit_url: 'mall.cate/edit', delete_url: 'mall.cate/delete', export_url: 'mall.cate/export', modify_url: 'mall.cate/modify', }; var Controller = { index: function () { ea.table.render({ init: init, cols: [[ {type: "checkbox"}, {field: 'id', 80, title: 'ID'}, {field: 'sort', 80, title: '排序', edit: 'text'}, {field: 'title', minWidth: 80, title: '分类名称'}, {field: 'image', minWidth: 80, title: '分类图片', search: false, templet: ea.table.image}, {field: 'remark', minWidth: 80, title: '备注信息'}, {field: 'status', title: '状态', 85, search: 'select', selectList: {0: '禁用', 1: '启用'}, templet: ea.table.switch}, {field: 'create_time', minWidth: 80, title: '创建时间', search: 'range'}, { 250, title: '操作', templet: ea.table.tool} ]], }); ea.listen(); }, add: function () { ea.listen(); }, edit: function () { ea.listen(); }, }; return Controller; });
search: 'select'代表这一行数据是列表框展示,
search: false 代表关闭这一行的搜索
search: 'range'代表时间查找
下面记录一些我开发时碰到的问题:
1.layui提交表莫名奇妙提交了两次
解决方法:检查是否多次导入了layui的js,layui的js每导入一次就创建一次事件,并且不会被替换。
2.EasyAdmin原方法如何联三表四表
解决方法:
mods中加上方法(这里是案例)
接口里调用
3.如何修改原生到处接口:
解决方法:
方法里写上:
/** * @NodeAnotation(title="导出") */ public function export() { list($page, $limit, $where) = $this->buildTableParames(); $tableName = $this->model->getName(); $tableName = CommonTool::humpToLine(lcfirst($tableName)); $prefix = config('database.connections.mysql.prefix'); $dbList = Db::query("show full columns from {$prefix}{$tableName}"); $header = []; foreach ($dbList as $vo) { $comment = !empty($vo['Comment']) ? $vo['Comment'] : $vo['Field']; if (!in_array($vo['Field'], $this->noExportFields)) { $header[] = [$comment, $vo['Field']]; } } $list = $this->model ->where($where) ->limit(100000) ->order('id', 'desc') ->select() ->toArray(); $fileName = time(); return Excel::exportData($list, $header, $fileName, 'xlsx'); }
直接在接口页面加上这个方法,在里面修改即可。