thinkphp route 配置 示例

在 ThinkPHP 中,路由配置允许你将 URL 请求映射到指定的控制器和方法。路由配置文件一般位于 application/route.php 中,下面是一些常见的路由配置示例。

1. 基本路由配置

最基本的路由配置方式是将 URL 路径映射到指定的控制器方法。

use think\facade\Route;// 将 /hello 映射到 Index 控制器的 hello 方法
Route::get('hello', 'index/hello');// 将 /product 映射到 Product 控制器的 index 方法
Route::get('product', 'product/index');

2. 带参数的路由

你可以在路由中使用参数,参数可以通过 URL 传递。

// 捕获 id 参数,映射到 Product 控制器的 detail 方法
Route::get('product/:id', 'product/detail');

ProductController 中,你可以通过 $id 来获取传递的参数。

// ProductController.php
public function detail($id)
{return 'Product ID: ' . $id;
}

3. 路由参数约束

你可以为路由参数添加约束,指定参数的格式。

// 参数 id 必须是数字
Route::get('product/:id', 'product/detail')->pattern(['id' => '\d+']);

4. 使用正则路由

ThinkPHP 允许你为路由使用正则表达式来匹配复杂的 URL 模式。

// 匹配 /article/1234 格式的 URL
Route::get('article/:id', 'article/show')->pattern(['id' => '\d+']);

5. 路由别名

可以为路由设置别名,使得你可以使用不同的 URL 来访问相同的路由。

// 将 /profile 映射到 User 控制器的 info 方法
Route::get('profile', 'user/info')->name('user.profile');

6. 路由分组

可以使用路由分组来管理不同模块的路由。

Route::group('admin', function () {// 映射到 admin 模块的 User 控制器的 index 方法Route::get('user', 'admin/user/index');Route::get('product', 'admin/product/index');
});

7. 路由缓存

对于生产环境,ThinkPHP 提供了路由缓存功能,以提高性能。

// 在生产环境中,可以使用以下命令缓存路由配置
php think route:cache

8. 自定义 HTTP 请求类型

你可以为路由指定请求类型,如 getpostputdelete 等。

// POST 请求方式访问该路由
Route::post('submit', 'index/submit');// PUT 请求方式访问该路由
Route::put('update/:id', 'index/update');

9. 路由回调方法

你可以使用闭包函数定义一个匿名路由。

Route::get('hello', function () {return 'Hello, ThinkPHP!';
});

10. 路由重定向

ThinkPHP 允许你使用路由重定向,将一个 URL 重定向到另一个 URL。

// 将 /old-url 重定向到 /new-url
Route::get('old-url', function () {return redirect('new-url');
});

11. 控制器命名空间

在路由中,通常会指定控制器的完整命名空间。

// 映射到 app\admin\controller\User 的 index 方法
Route::get('admin/user', 'admin/user/index');

12. 路由缓存清理

如果你对路由做了修改,需要清理缓存。

// 清理路由缓存
php think route:clear

总结

ThinkPHP 的路由功能非常强大,你可以通过灵活的路由配置来控制 URL 和控制器方法之间的映射关系。路由配置文件通常在 application/route.php 中定义,可以使用上述示例来帮助你实现常见的路由需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python魔术方法的学习

判断是否为可迭代对象 from collections.abc import Iterableobj [1, 2, 3] # 替换为你要判断的对象 if isinstance(obj, Iterable):print("这是一个可迭代对象") else:print("这不是一个可迭代对象")_next_ 是 Python 中迭代器对象的一个方法&#xf…

web——upload-labs——第四关——.htaccess文件绕过

先尝试直接上传一个普通的一句话木马 显示此文件不允许上传,这道题并没有提示不允许上传什么后缀的文件,经过尝试,基本上所有后缀能够被解析为php语句执行的文件都不能成功上传。试试正常的图片能不能上传: 我们再来试试图片马能不…

Gitcode文件历史记录查看和还原

文件历史记录 文件历史记录用于记录代码文件的更改历史,它允许用户查看文件的不同版本,了解每个版本的修改内容、作者和提交消息。这对于跟踪文件演进、恢复错误更改、审查代码以及了解项目进展都非常有用。 文件历史记录功能提供了以下核心功能&#…

1、C语言学习专栏介绍

引言 欢迎来到C语言专栏学习之旅!C语言作为一种历史悠久且功能强大的编程语言,自其诞生以来,一直在计算机科学领域占据重要地位。 无论是操作系统开发、嵌入式系统、游戏编程,还是高性能计算,C语言都展现出了其独特的…

【学习】HTTP

HTTP 超文本传输协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型,客户端打开…

Visual Studio Code 端口转发功能详解

Visual Studio Code 端口转发功能详解 引言 Visual Studio Code(简称 VS Code)是一个功能强大的源代码编辑器,它支持多种编程语言的语法高亮、智能代码补全、自定义快捷键、代码重构等特性。除了这些基本功能外,VS Code 还提供了…

31-Shard Allocation Awareness(机架感知)

同一机器上,部署多个es节点,防止副本和主分片分配到同一机器上 例如:es节点a、b、c部署在01机器上,节点d、e、f部署在02机器上 es2.4版本配置 a、b、c节点yaml配置:node.rack: aaa d、e、f节点yaml配置&#xff1a…

机器学习【激活函数】

笔记内容侵权联系删 激活函数的概念神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输入在加…

内网、公网(外网)划分

内网、公网(外网)划分 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其…

前端神经网络入门(二):如何利用 WebGPU 进行数值计算,实现大规模数据的计算加速?- 边读边按下F12跑代码吧

在 Web 应用开发中,JavaScript 是前端开发者们最常用的语言。然而,当面对大规模数据处理和计算任务时,JavaScript 在浏览器中的执行往往会受到诸多性能瓶颈的限制。幸运的是,WebGPU 的出现,为我们提供了在前端实现高性…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

Oracle故障处理:ora-12514 与 ora-28547

目录 项目场景 问题分析 问题总结 项目场景 现场同事求助说:有个刚刚部署在Windows上的Oracle11gR2数据库(单机单实例),使用PLSQL工具连接不上。帮忙查看后,发现未装Oracle client,指导其安装完Oracle客…

Kafka基础知识学习

Kafka概念 一、核心组件对照表 组件定义主要功能特点BrokerKafka集群中的服务器节点存储消息、处理请求、管理分区唯一ID,可能成为ControllerTopic消息的逻辑分类单元消息分类、存储组织包含多个Partition,类似数据库表PartitionTopic的物理分片并行处…

【miniMax开放平台-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被机器执行自动化程序攻击,存在如下风险: 暴力破解密码,造成用户信息泄露,不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 ,造成用户无法登陆、注册,大量收到垃圾短信的…

PC上浏览器是如何查询DNS 缓存的呢?

通过 ipconfig /displaydns 的显示结果可以获取本机的 DNS 缓存信息,那么浏览器是如何获取本机的 DNS 缓存。 答案是:浏览器获取本机的 DNS 缓存主要是通过操作系统提供的接口来获取,。 具体的获取途径如下: 先查询自身缓存&am…

26-ES集群搭建、身份认证配置

虚机搭建 添加es用户 elasticsearch 默认不允许root用户启动,所以需要创建es用户 useradd elasticsearch passwd elasticsearch 解压安装包 #解压es tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz 将文件夹赋予es用户权限 #将文件夹赋予es用户权限 sud…

BuyPass SSL证书:申请免费可用多域名SSL证书6个月180天

目录 一、前沿 二、条件 三、申请流程 四、注意事项 五、总结 一、前沿 找到一个6个月180天的免费证书,目前 BuyPass 提供了类似ZerSSL 等基于 ACME/Certbot 的证书自动签发服务 - BuyPass GO Free SSL,完全免费,只支持单域名、多域名&am…

OpenHarmony的公共事件

OpenHarmony的公共事件 公共事件简介 CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为:系统公共事件和自定义公共事件。 系统公共事件&#…

【AlphaFold3】开源本地的安装及使用

文章目录 安装安装DockerInstalling Docker on Host启用Rootless Docker 安装 GPU 支持安装 NVIDIA 驱动程序安装 NVIDIA 对 Docker 的支持 获取 AlphaFold 3 源代码获取基因数据库获取模型参数构建将运行 AlphaFold 3 的 Docker 容器 参考 AlphaFold3: https://github.com/goo…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的,用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式: npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…