TP6框架--EasyAdmin学习笔记:定义路由
这是我写的学习EasyAdmin的第二章,这一章我给大家分享下如何定义一条路由
正常的tp6定义路由方法如下:

/route/admins/app.php 文件内容
//路由变量自定义
Route::get('zhanghao/denglu/[:aaa]','app\\admins\\controller\\Account@login');
\app\admins\controller\Account.php 文件内容
<?php
namespace app\admins\controller;
use think\facade\Db;
use app\BaseController;
class Account extends BaseController{ public function login($aaa){
return $aaa;
return view();
} }
以上是tp6的路由定义流程,我们可以看出,tp6定义路由是view+model+controller三层文件组成的,而EasyAdmin里运用了layui框架,在定义路由的时候需要在加一个js文件,四个文件对应的位置如下图:
案例内容:定义一个路由组,仿照官方案例里的goods商品列表。
view:
easyadmin-2\app\admin\view\mall\goodsone

index.html文件内容为:

这里就可以看到定义后的子路由是什么格式
model:
easyadmin-2\app\admin\model

文件内容为:

案例里取消了delete_time限制,这样可以看到表单里的所有数据
cate方法为外键方法
controller:
easyadmin-2\app\admin\controller\mall

文件内容为:
<?php namespace app\admin\controller\mall; use app\admin\model\MallGoodsOne;
use app\admin\traits\Curd;
use app\common\controller\AdminController;
use EasyAdmin\annotation\ControllerAnnotation;
use EasyAdmin\annotation\NodeAnotation;
use think\Facade\Db;
use think\App; /**
* Class Goods
* @package app\admin\controller\mall
* @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-2\public\static\admin\js\mall

内容为:
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', width: 80, title: 'ID'},
{field: 'sort', width: 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', width: 100, title: '市场价', templet: ea.table.price},
{field: 'discount_price', width: 100, title: '折扣价', templet: ea.table.price},
{field: 'total_stock', width: 100, title: '库存统计'},
{field: 'stock', width: 100, title: '剩余库存'},
{field: 'virtual_sales', width: 100, title: '虚拟销量'},
{field: 'sales', width: 80, title: '销量'},
{field: 'status', title: '状态', width: 85, search: 'select',selectList: {0: '禁用', 1: '启用'}, templet: ea.table.switch},
{field: 'create_time', minWidth: 80, title: '创建时间'},
{
width: 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-2\config

内容为:
<?php
// +----------------------------------------------------------------------
// | 应用设置
// +---------------------------------------------------------------------- use think\facade\Env; 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'),
];
如果本文对你有所帮助,麻烦你点个赞,下一章讲下如何创建一个表单并进行增删查改。
TP6框架--EasyAdmin学习笔记:定义路由的更多相关文章
- go微服务框架kratos学习笔记二(kratos demo 结构)
目录 api cmd configs dao di model server service 上篇文章go微服务框架kratos学习笔记一(kratos demo)跑了kratos demo 本章来看 ...
- vue2.0学习笔记之路由(二)路由嵌套+动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue2.0学习笔记之路由(二)路由嵌套
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- golang日志框架--logrus学习笔记
golang日志框架--logrus学习笔记 golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数,对于更精细的日志级别.日志文件分割以及日志分发等方面并没有提供 ...
- go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])
目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...
- # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)
目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...
- go微服务框架kratos学习笔记八 (kratos的依赖注入)
目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...
- DBFlow框架的学习笔记之入门
什么是DBFlow? dbflow是一款android高性的ORM数据库.可以使用在进行项目中有关数据库的操作.github下载源码 1.环境配置 先导入 apt plugin库到你的classpat ...
- go微服务框架kratos学习笔记十(熔断器)
目录 go微服务框架kratos学习笔记十(熔断器) 什么是熔断 熔断器逻辑 kratos Breaker kratos 熔断逻辑 kratos熔断器使用说明 bladmaster client br ...
- go微服务框架kratos学习笔记三(构建单独的http或者grpc demo项目)
go微服务框架kratos学习笔记三(构建单独的http或者grpc demo项目) 前面两篇跑通了demo项目,和大概了解了kratos demo整体结构,本篇分别构建一个http和一个grpc微服 ...
随机推荐
- Windows—通过Navicat导入MySQL示例数据库employees
Navicat是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL.Oracle.PostgreSQL.SQLite.SQL Server.MariaDB .MongoDB 等不同类型的数据 ...
- Django高级特性:django-apscheduler定时任务
前言: 在使用Django框架开发web项目时,很多时候需要设置定时任务或让用户手动在页面上设置定时任务 在Django中实现定时任务功能大概有以下三种方法: Celery 分布式任务队列.侧重实 ...
- Vuepress + GitHub Actions实现文档博客自动部署
说明 接着我上一篇文章,已经使用vuepress+github pages搭建好了自己的文档博客,并且可以在本地打包上传后就可以在pages上查看更新内容.但是有1个比较明显的缺点:打包速度并不快!! ...
- SpringBoot+MybatisPlus实现关联表查询
1.说明 最近写代码用到了mybatisPlus涉及到关联表查询.需求是这样的: 我有一个专业表major其中有个字段是所属院系dept_id,我需要通过这个dept_id关联院系表departmen ...
- kmp、z算法、exkmp
一.kmp算法 1.基本概念 模式串:P 匹配串:T kmp算法精髓:找打一个最大的x,使得T[s+1,...,s+k]的后x个字符,和P的前x个字符相同. 2.next数组 next数组:记录模式串 ...
- 学习go语言编程之工程管理
Go命令行工具 安装了Go语言的安装包后,就直接自带Go命令行工具. # 查看当前安装的Golang版本 go version # 查看go命令行工具的帮助信息 go help Go命令行工具可以完成 ...
- day05---系统的重要文件(3)
1) /usr/local 编辑 安装的软件 第三方软件安装位置 软件安装的三种方法 1.yum安装 自动解决依赖问题 yum [选项参数] 包名 第一个里程碑:我想要安装的软件的名字 或者是 知道命 ...
- Excel 求和函数结果一直为零
参考资料:Excel表格求和结果总是0怎么办 用SUMIFS函数求和,结果都是零 错误原因: 1.单元列数据格式设置错误,参考资料一 2.数据中含有空格或者回车键或者隐藏字符,参考资料二 解决方法: ...
- 【webserver 前置知识 03】Linux网络编程入门其二,I/O多路复用
I/O多路复用 I/O多路复用使得程序能够同时监听多个文件描述符 LInux下实现I/O多路复用的系统调用主要由select.poll以及epoll(常问,要会自己写出来) 例子 阻塞等待 阻塞等待可 ...
- Jina AI x 矩池云Matpool |神经搜索引擎,一键构建
图片.视频.语音等非结构化数据在快速增长,随着深度学习技术的不断升级,非结构化数据的搜索也逐渐形成可能.在这样的背景下,专注于神经搜索技术的商业开源软件公司--Jina AI,提出了神经搜索 (Neu ...