ThinkPHP 路由使用

news2024/11/18 23:29:45

最近在使用ThinkPHP6做项目的开发,故整理了一些常用的路由使用方式,

可以方便之后的使用。

目录

引用路由门面

基础路由

快捷路由

规则表达式

静态地址

静态结合动态地址

方法设置

完全匹配

默认路由规则

设置完全匹配

路由别名

变量规则

局部变量规则

全局变量规则

重定向路由

路由到模板

强制路由


引用路由门面

use think\facade\Route;

基础路由

Route::rule('路由表达式', '路由地址', '请求类型');

所有请求类型皆可访问

Route::rule('user', 'User/index');

只能get访问

Route::rule('user', 'User/index', 'GET');

get/post都能访问

Route::rule('user', 'User/index', 'GET|POST');

注意:请求类型参数不区分大小写

快捷路由

Route::快捷方法名('路由表达式', '路由地址');

类型

描述

快捷方法

GET

GET请求

get

POST

POST请求

post

PUT

PUT请求

put

DELETE

DELETE请求

delete

PATCH

PATCH请求

patch

HEAD

HEAD请求

head (V6.0.13+)

*

任何请求类型

any

示例如下:

Route::get('user','User/index');
Route::post('user','User/index');
Route::put('user','User/index');
Route::delete('user','User/index');
Route::any('user/detail','User/detail');

规则表达式

静态地址

Route::get('user', 'User/index');

静态结合动态地址

Route::get('user/detail/:name', 'User/detail');

Route::get('user/:name/:gender', 'User/test');

方法设置

public function detail($name = 'ThinkPHP6')
{
    return 'hello, This is ' . $name . ' detail page!';
}

public function test($name, $gender)
{
    echo $name;
    echo '<br/>';
    echo $gender;
}

完全匹配

默认路由规则

Route::get('user', 'User/index'); 

默认路由规则不要求全部匹配,则下面两种都可访问

(1)http://serverName/user

(2)http://serverName/user/2

设置完全匹配

Route::get('user$', 'User/index');

之后只能路由(1)访问

路由别名

给路由设置别名,注意要确保全局唯一

例如:

Route::get('user/detail/:name', 'User/detail')->name('detail');

控制器或视图生成地址时可以:

url('detail', ['name' => 'ThinkPHP6']);

默认生成地址:

url('user/detail', ['name' => 'ThinkPHP6']);

变量规则

局部变量规则

仅在当前路由有效:

// 匹配字母、数字、中文和下划线字符
Route::get('user/detail/:name', 'User/detail')->pattern(['name' => '[\w]+']);
// 匹配数字
Route::get('user/delete/:id', 'User/delete')->pattern(['name' => '[\d]+']);

全局变量规则

// 批量匹配设置
Route::pattern(['name' => '\w+', 'id'   => '\d+',]);
Route::get('user/detail/:name', 'User/detail');
Route::get('user/delete/:id', 'User/delete');

重定向路由

Route::redirect('user/delete/:id', url('user/detail', ['name' => 'ThinkPHP6']), 302);

路由到模板

// 没有模板变量
Route::view('user/detail', 'user/index');
// 传递模板变量
Route::view('user/detail', 'user/index', ['name' => '张三']);
// 动态路由+模板变量
Route::view('user/:name', 'user/index', ['name' => '张三']);

强制路由

为防止设置路由不生效,可以修改config/route.php

开启全局强制路由、路由完全匹配选项

开启全局完全匹配后,如果需要对某个路由关闭完全匹配,可以使用

Route::get('user/detail/:name', 'User/detail')->completeMatch(false);

在这里只是列举了一些常用的路由类型和参数设置,实际上还有很多,有兴趣的话可以了解一下。

 

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

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

相关文章

再次飙升GitHub榜首?这份“保姆级”的SpringBoot笔记,不服不行

Spring Boot 延续了 Spring 框架的核心思想 IOC 和 AOP&#xff0c;简化了应用的开发和部署&#xff0c;通过少量的代码就能创建一个独立的、产品级别的 Spring 应用。在继承了Spring 一切优点的基础上&#xff0c;其最大的特色就是简化了Spring 应用的集成、配置、开发&#x…

怎样提高美国独立服务器的安全性?

目前&#xff0c;越来越多的用户都开始使用起了美国独立服务器&#xff0c;而这种服务器通常都比共享服务器的安全性要高出许多&#xff0c;但是管理起来比较复杂。下面将为大家介绍怎样才能提高美国独立服务器的安全性&#xff0c;包括下面几点&#xff1a; 1.使用强密码 有时…

队列------数据结构

队列:Queue是一个普通的队列&#xff0c;Deque是一个双端队列 普通的队列:只能是队尾进&#xff0c;队头出; 双端队列:可以从队头进队尾出&#xff0c;也可以从队尾进&#xff0c;队头出&#xff0c;也可以用作一个栈; 1)下面我们来介绍一下Queue的实现方法: 在有容量限制的情况…

你是真的“C”——详解函数递归

详解函数递归运用&#x1f60e;前言&#x1f64c;一、什么是递归&#x1f64c;二、递归运用的两个必要条件&#x1f64c;三、递归与迭代&#x1f64c;总结撒花&#x1f49e;哈喽&#xff01;&#x1f604;各位CSDN的uu们&#xff0c;我是你的博客好友小梦&#xff0c;希望我的文…

长安链 VM Engine架构设计深度解读

VM Engine是长安链智能合约引擎的推荐选型&#xff0c;采用Docker容器化架构&#xff0c;容器内部由一个任务调度器和多个合约进程组成&#xff0c;实现了多合约隔离与多进程并发&#xff0c;支持独立部署&#xff0c;目前支持Golang语言合约。 1. 背景说明 自2009年11月以来&…

CUDA 冬令营1

基本概念 1.CPU的任务&#xff1a;为串行任务优化 2.GPU的任务&#xff1a;为并行任务优化 3.L4T ubuntu&#xff1a;基于NVIDIA Tegra芯片的ubuntu系统&#xff08;linux for Tegra&#xff09; 4.Tegra&#xff1a;继承了ARM CPU 和 NVIDIA GPU的处理器芯片 5.X86&#xff1…

2023京东年货节全民炸年兽活动最详细规则

2023京东全民炸年兽活动规则 1、活动时间 整体活动时间: 2022年12月26日00: 00: 00–2023年01月15日23: 59: 59 2、活动玩法 (1)玩法一:全民炸年兽瓜分10亿压岁钱 活动时间: 2022年12月26日00: 00: 00–2023年01月15日23: 59: 59 (2) 玩法二:每晚8点分百万红包 活动时间…

Houdini和C4D区别在哪?哪个更好用

Houdini和C4D作为当前软件市场上非常热门的设计软件&#xff0c;现在越来越多的小伙伴开始学习。所以咱们今天就从行业应用、建模、动画和使用难易度等进行多方面对比&#xff0c;帮助小伙伴们更清楚地了解这两款软件—— Houdini作为一款非常受欢迎的3D&VFX制作工具&#…

美国公司是如何搞创新的,又是如何失败的......

PARC&#xff0c;施乐帕洛阿图研究中心&#xff0c;和贝尔实验室媲美的IT界圣地。从这里走出了一大批伟大的发明&#xff0c;直接改变了整个计算机行业。Alto PC &#xff0c;图形用户界面&#xff0c;所见即所得&#xff0c;以太网&#xff0c;PostScript&#xff0c;面向对象…

复购高,退货低的日本市场成为跨境电商新风口,新手如何快速入局

据统计预测&#xff0c;未来几年将会有越来越多的跨境卖家涌入日本电商市场。但由于在语言、文化和消费习惯上存在一定的差异&#xff0c;很多中国卖家并不熟悉日本的文化与市场需求&#xff0c;也很难在短时间内快速适应日本电商平台的运营规则与服务。 日本作为一个经济发达的…

【PS-选区编辑】变换选区、反向命令、建立工作路径

目录 变换选区 1、位置 2、多种操作 反向命令 1、反选选区&#xff1a;ctrlshifti 2、边界 3、平滑 4、扩展和收缩 5、羽化 建立工作路径 变换选区 1、位置 制作了一个制作了选区后&#xff0c;鼠标右击找到【变换选区】&#xff0c;或在【选择】菜单中找到【变换…

JavaScript 入门基础 - 运算符(三)

JavaScript 入门基础 - 运算符&#xff08;三&#xff09; 文章目录JavaScript 入门基础 - 运算符&#xff08;三&#xff09;1.什么是运算符2.表达式和返回值3.算术运算符概述4. 赋值运算符5.递增和递减运算符5.1 递增和递减运算符概述5.2 递增运算符5.2.1 前置递增运算符5.2.…

Ajax(1)---了解Ajax和XML

目录 Ajax XML了解 Ajax的特点 HTTP协议请求报文与响应文本结构 HTTP 请求报文 响应报文 Ajax AJAX全称为Asynchronous JavaScript And XML&#xff0c;就是异步的JS和XML通过AJAX可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势:无刷新获取数据。AJAX不是新…

一篇带你彻底弄懂SpringBoot项目jdk版本及依赖不兼容问题

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 一篇带你彻底弄懂SpringBoot项目jdk版本及依赖不兼容问题 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收…

MySQL 大表优化方案

单表优化 读写分离 缓存 表分区 垂直拆分 水平拆分 兼容MySQL且可水平扩展的数据库 NoSQL 当MySQL单表记录数过大时&#xff0c;增删改查性能都会急剧下降&#xff0c;可以参考以下步骤来优化&#xff1a; 单表优化 除非单表数据未来会一直不断上涨&#xff0c;否则不…

通过Django发送邮件

通过Django发送邮件非常的简单&#xff0c;在Python中已经内置了一个smtplib邮件发送模块&#xff0c;Django在此基础上进行了简单地封装&#xff0c;我们可以在Django的环境中方便的发送邮件。大部分邮件发送成功主要是邮件的参数配置&#xff0c;本文以常用的126邮箱和QQ邮箱…

《2022中国数据智能产业图谱3.0版》重磅发布

‍数据猿出品本次“数据猿行业盘点季大型主题策划活动——《2022中国数据智能产业图谱3.0版》”为2022年度图谱版本的升级更新版&#xff0c;下一次版本迭代将于2023年4月底发布2023年1.0版&#xff0c;敬请期待&#xff0c;欢迎报名。‍数据智能产业创新服务媒体——聚焦数智 …

svn修改提交日志信息

参考&#xff1a;唐小码个人博客 一、svn修改提交的msg信息和作者信息 鼠标右键找到show log> 选择要修改的日志行&#xff0c;第一个是修改作者信息&#xff0c;第二个是修改日志信息 二、svn修改提交的日期信息 修改日期信息的话&#xff0c;你得先有svn服务器的权限&…

光电接收的TIA设计

APD的光电接收电路如下图所示&#xff0c;APD的光电流较SiPM是小很多的&#xff0c;所以需要TIA来做跨阻放大&#xff0c;一般RF电阻要5k到10k左右&#xff0c;光电流一般也就几十uA&#xff0c;这个跨阻放大主要是对Cf大小的选择&#xff0c;Cf的选择主要考虑下面的两点。从放…

【基础强训】day4

一、选择题 &#x1f308;第1题 有以下程序 #include<iostream> #include<cstdio> using namespace std; int main(){ int m0123, n123; printf("%o %o\n", m, n); return 0; } 程序运行后的输出结果是&#xff08;&#xff09; A 0123 0173 B 01…