热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ThinkPHP5.1路由地址中组合变量规则的使用

组合变量规则如果你的路由规则比较特殊,可以在路由定义的时候使用组合变量。例如:Route::get(item--,product

组合变量规则
如果你的路由规则比较特殊,可以在路由定义的时候使用组合变量。

例如:

Route::get('item--', 'product/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);
组合变量的优势是路由规则中没有固定的分隔符,可以随意组合需要的变量规则和分割符,例如路由规则改成如下一样可以支持:

Route::get('item', 'product/detail')
    ->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']);
Route::get('item@-', 'product/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);
使用组合变量的情况下如果需要使用可选变量,则可以使用下面的方式:

Route::get('item-', 'product/detail')
    ->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']);
组合变量的正则定义不支持使用模式修饰符

/home/myth/www/think/route/route.php

Route::get('item--', 'product/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);  // http://contoso.org/item-book-2334

Route::get('item', 'product/detail')
    ->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']); // http://contoso.org/itembook2334

Route::get('item@-', 'product/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);  // http://contoso.org/item@book-2334

Route::get('item-', 'product/detail')
    ->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']); //http://contoso.org/item-book2334
                                                       // or http://contoso.org/item-book
return [

];

/home/myth/www/think/application/index/controller/Product.php

namespace app\index\controller;
use think\Controller;

class Product extends Controller
{    
    public function detail($name,$id){
        return 'detail - '.$name.'-'.$id;   //  以上5条不同的路由地址都会执行同一控制器的同一方法
    }
}

动态路由
可以把路由规则中的变量传入路由地址中,就可以实现一个动态路由,例如:

// 定义动态路由
Route::get('hello/:name', 'index/:name/hello');
name变量的值作为路由地址传入。

动态路由中的变量也支持组合变量及拼装,例如:

Route::get('item--', 'product_:name/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);

// 定义动态路由
// Route::get('hello/:name/:id', 'index/:name/detail'); // http://contoso.org/hello/product/2334

Route::get('item--', 'product_:name/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']); // http://contoso.org/item-book-2334

return [

];

/home/myth/www/think/application/index/controller/ProductBook.php

namespace app\index\controller;
use think\Controller;

class ProductBook extends Controller
{    
    public function detail($name,$id){
        return 'Product_Book detail - '.$name.'-'.$id;
    }
}
————————————————
版权声明:本文为CSDN博主「zhengzizhi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhengzizhi/article/details/78691171


推荐阅读
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • Spring 切面配置中的切点表达式详解
    本文介绍了如何在Spring框架中使用AspectJ风格的切面配置,详细解释了切点表达式的语法和常见示例,帮助开发者更好地理解和应用Spring AOP。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 一、背景这段时间刚好有时间,帮朋友做一个简单的系统管理网站,因为朋友买的空间是虚拟机,支持的PHP版本在5.5以下,所以只好挑一个老框架,为了快速便捷开发,我就选择了ThinkPH ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • XAMPP 遇到 404 错误:无法找到请求的对象
    在使用 XAMPP 时遇到 404 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 本文将深入解析 Lumen 框架中的中间件机制,并提供实用的应用指南。我们将从官方文档出发,重点解读 5.3 版本中的相关内容,帮助开发者更好地理解和使用中间件功能。通过具体示例,探讨中间件在请求处理流程中的作用及其配置方法。 ... [详细]
  • 在日常开发中,正则表达式是处理字符串时不可或缺的工具。本文汇总了常用的正则表达式,帮助开发者高效解决常见问题。例如,验证数字:`1$`;验证n位数字:`^\d{n}$`;验证至少n位数字:`^\d{n,}$`;验证m到n位数字:`^\d{m,n}$`。此外,还涵盖了验证零和非零数字、邮箱地址、手机号码等多种场景,建议关注并收藏以备不时之需。 ... [详细]
  • 实现Nginx对ThinkPHP URL重写及PATHINFO支持的详细方法解析【PHP开发】
    在PHP后端开发中,实现Nginx对ThinkPHP的URL重写及PATHINFO支持是一项常见的需求。本文详细解析了经过多次尝试和研究,最终找到的一种有效配置方法,能够确保URL_MODERewrite功能正常运行,并提供稳定的服务。此外,文章还探讨了相关配置项的具体作用及其优化建议,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了thinkphpurl生成相关的知识,希望对你有一定的参考价值。为了配合所使用的URL模式,我们需要能够动态的根据当前 ... [详细]
author-avatar
mobiledu2502911033
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有