这是我写的学习EasyAdmin的第二章,这一章我给大家分享下如何定义一条路由
正常的tp6定义路由方法如下:
/route/admins/app.php 文件内容
//路由变量自定义 Route::get('zhanghao/denglu/[:aaa]','app\admins\controller\Account@login');
appadminscontrollerAccount.php 文件内容
<?php namespace appadminscontroller; use thinkfacadeDb; use appBaseController; class Account extends BaseController{ public function login($aaa){ return $aaa; return view(); } }
以上是tp6的路由定义流程,我们可以看出,tp6定义路由是view+model+controller三层文件组成的,而EasyAdmin里运用了layui框架,在定义路由的时候需要在加一个js文件,四个文件对应的位置如下图:
案例内容:定义一个路由组,仿照官方案例里的goods商品列表。
view:
easyadmin-2appadminviewmallgoodsone
index.html文件内容为:
这里就可以看到定义后的子路由是什么格式
model:
easyadmin-2appadminmodel
文件内容为:
案例里取消了delete_time限制,这样可以看到表单里的所有数据
cate方法为外键方法
controller:
easyadmin-2appadmincontrollermall
文件内容为:
<?php namespace appadmincontrollermall; use appadminmodelMallGoodsOne; use appadmin raitsCurd; use appcommoncontrollerAdminController; use EasyAdminannotationControllerAnnotation; use EasyAdminannotationNodeAnotation; use thinkFacadeDb; use thinkApp; /** * Class Goods * @package appadmincontrollermall * @ControllerAnnotation(title="商城商品管理") */ class GoodsOne extends AdminController { use Curd; protected $relationSearch = true; public function __construct(App $app) { parent::__construct($app); $this->model = new MallGoodsOne(); } /** * @NodeAnotation(title="列表") */ public function index() { //var_dump($this->request->isAjax());exit(); if ($this->request->isAjax()) { if (input('selectFields')) { return $this->selectList(); } list($page, $limit, $where) = $this->buildTableParames(); $count = $this->model ->withJoin('cate', 'LEFT') ->where($where) ->count(); $list = $this->model ->withJoin('cate', 'LEFT') ->where($where) ->page($page, $limit) ->order($this->sort) ->select(); $data = [ 'code' => 0, 'msg' => '', 'count' => $count, 'data' => $list, ]; return json($data); } return $this->fetch(); } }
js:
easyadmin-2publicstaticadminjsmall
内容为:
define(["jquery", "easy-admin"], function ($, ea) { var init = { table_elem: '#currentTable', table_render_id: 'currentTableRenderId', index_url: 'mall.goodsone/index', add_url: 'mall.goodsone/add', edit_url: 'mall.goodsone/edit', delete_url: 'mall.goodsone/delete', export_url: 'mall.goodsone/export', modify_url: 'mall.goodsone/modify', stock_url: 'mall.goodsone/stock', }; var Controller = { index: function () { ea.table.render({ init: init, toolbar: ['refresh', [{ text: '添加', url: init.add_url, method: 'open', auth: 'add', class: 'layui-btn layui-btn-normal layui-btn-sm', icon: 'fa fa-plus ', extend: 'data-full="true"', }], 'delete', 'export'], cols: [[ {type: "checkbox"}, {field: 'id', 80, title: 'ID'}, {field: 'sort', 80, title: '排序', edit: 'text'}, {field: 'cate.title', minWidth: 80, title: '商品分类'}, {field: 'title', minWidth: 80, title: '商品名称'}, {field: 'logo', minWidth: 80, title: '分类图片', search: false, templet: ea.table.image}, {field: 'market_price', 100, title: '市场价', templet: ea.table.price}, {field: 'discount_price', 100, title: '折扣价', templet: ea.table.price}, {field: 'total_stock', 100, title: '库存统计'}, {field: 'stock', 100, title: '剩余库存'}, {field: 'virtual_sales', 100, title: '虚拟销量'}, {field: 'sales', 80, title: '销量'}, {field: 'status', title: '状态', 85, search: 'select',selectList: {0: '禁用', 1: '启用'}, templet: ea.table.switch}, {field: 'create_time', minWidth: 80, title: '创建时间'}, { 250, title: '操作', templet: ea.table.tool, operat: [ [{ text: '编辑', url: init.edit_url, method: 'open', auth: 'edit', class: 'layui-btn layui-btn-xs layui-btn-success', extend: 'data-full="true"', }, // { // text: '入库', // url: init.stock_url, // method: 'open', // auth: 'stock', // class: 'layui-btn layui-btn-xs layui-btn-normal', // } ], 'delete'] } ]], }); ea.listen(); }, add: function () { ea.listen(); }, edit: function () { ea.listen(); }, stock: function () { ea.listen(); }, }; return Controller; });
还需要在数据库中创建一个表,表名为goods_one
格式可以参照官网案例的goods
以上就是EasyAdmin定义路由的过程,如果你需要查看报错,你需要修改以下文件
easyadmin-2config
内容为:
<?php // +---------------------------------------------------------------------- // | 应用设置 // +---------------------------------------------------------------------- use thinkfacadeEnv; return [ // 应用地址 'app_host' => Env::get('app.host', ''), // 应用的命名空间 'app_namespace' => '', // 是否启用路由 'with_route' => true, // 是否启用事件 'with_event' => true, // 开启应用快速访问 'app_express' => true, // 默认应用 'default_app' => 'index', // 默认时区 'default_timezone' => 'Asia/Shanghai', // 应用映射(自动多应用模式有效) 'app_map' => [ Env::get('easyadmin.admin', 'admin') => 'admin', ], // 后台别名 'admin_alias_name' => Env::get('easyadmin.admin', 'admin'), // 域名绑定(自动多应用模式有效) 'domain_bind' => [], // 禁止URL访问的应用列表(自动多应用模式有效) 'deny_app_list' => ['common'], // 异常页面的模板文件 // 'exception_tmpl' => Env::get('app_debug') == 1 ? app()->getThinkPath() . 'tpl/think_exception.tpl' : app()->getBasePath() . 'common' . DIRECTORY_SEPARATOR . 'tpl' . DIRECTORY_SEPARATOR . 'think_exception.tpl', // 跳转页面的成功模板文件 'dispatch_success_tmpl' => app()->getBasePath() . 'common' . DIRECTORY_SEPARATOR . 'tpl' . DIRECTORY_SEPARATOR . 'dispatch_jump.tpl', // 跳转页面的失败模板文件 'dispatch_error_tmpl' => app()->getBasePath() . 'common' . DIRECTORY_SEPARATOR . 'tpl' . DIRECTORY_SEPARATOR . 'dispatch_jump.tpl', // 错误显示信息,非调试模式有效 // 'error_message' => '页面错误!请稍后再试~', // 显示错误信息 'show_error_msg' => true, // 静态资源上传到OSS前缀 'oss_static_prefix' => Env::get('easyadmin.oss_static_prefix', 'static_easyadmin'), ];