技术标签: php ci url
URI 路由
一般来说,URI字符串有着和它唯一对应的控制器(controller)类/方法。URI的各个部分是如下模式(pattern):
example.com/class/function/id/
然而在一些例子中,你也许想重定向这种关系来调用一个不同的类/方法(class/function),而不是与URL一一对应(的调用).
例如,你可能想使你的URL采用这种原型(prototype):
example.com/product/1/
example.com/product/2/
example.com/product/3/
example.com/product/4/
一般情况下,URL的第二个部分表示方法名,不过在上面的例子中,它表示一个产品的ID。CodeIgniter可以实现这个功能,让用户可以重新定向(remap)URI处理程序.
设定你自己的路由规则
路由规则定义在application/config/routes.php 文件中. 在此文件中,你可以看到一个名为 $route的数组,它可以让你定义你自己的路由规则。 定义可以用两种方式: 通配符(wildcards) 或者 正则表达式(Regular Expressions)
通配符
一个典型的通配符路由看起来是这样的:
$route['product/(:num)'] = "catalog/product_lookup";
在一个路由中,数组的键包含着被匹配的URI,而数组的值包含着路由将被重定向的目的地.在上面的例子中,如果单词“product”出现在URL的第一个部分中,而且数字(:num)出现在URI的第二个部分中,"catalog"类和"product_lookup"方法将被替代使用(即将被重定向).
你可以匹配文字的值或者使用以下两种通配符类型:
:num 将匹配一个只包含有数字的segment(段).
:any 将匹配任何字符(可以是多个segment段).可以匹配多个值,如:
$route['product/(:any)'] = "catalog/product_lookup/$1/$2/$3/$4/$5"; //将整条url上的每一个参数全部传递给catalog控制器下的 product_lookup方法。
注意: 路由将会按照定义的顺序来运行.高层的路由总是优先于低层的路由.
例子
下面是一些简单的例子:
$route['journals'] = "blogs";
如果URL的第一个分段(类名)是关键字"journals",那么将会重定向到"blogs"类中处理.
$route['blog/joe'] = "blogs/users/34";
如果URL的前两个分段是"blog"和"joe",那么将会重定向到"blogs"类的"users"方法中处理.并且将ID"34"设为参数.
$route['product/(:any)'] = "catalog/product_lookup";
当"product"作为URL中第一个分段时, 无论第二分段是什么都将被重定向到"catalog"类的"product_lookup"方法.
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
当“product”作为 URL 中第一个分段时,如果第二分段是数字,则将被重定向到“catalog”类,并传递所匹配的内容到“product_lookup_by_id”方法中。
重要提示: 不要在前面或后面加"/".
正则表达式
如果你喜欢可以使用正则表达式来自定义你的路由规则. 任何有效的正则表达式都是被允许的, 甚至逆向引用.
注意: 如果你使用逆向引用请将双反斜线语法替换为美元符语法(\\1 替换为 $1).
一个典型的正则表达式看起来像下面的样子:
$route['products/([a-z]+)/(\d+)'] = "$1/id_$2";
上例中, 类似于 products/shirts/123 的URI 将换成调用 shirts 控制器类的 id_123 方法.
你也可以混合使用通配符与正则表达式.
系统保留的路由
系统会保留两个路由:
第一个为系统默认的路由:
$route['default_controller'] = 'welcome';
这个路由表明了当URI中不包含要访问的类和控制器信息的(即只访问根目录的情况,如http://localhost/ci)将要加载哪个控制器。上例中,系统将加载 "welcome" 这个类(控制器)。你应该保证设置一个默认路由,不然你的首页将会显示 404 错误。
第二个为404页面的路由:
$route['404_override'] = '';
这个路由标识了如果请求的控制器无法访问的时候将加载哪个控制器。它相当于覆盖了默认的404错误页面(即提供了自己定义404页面的功能)。但它不会影响show_404()这个方法,这个方法依然会加载默认的位于application/errors/error_404.php的error_404.php页面。
重要: 保留的路由应该在所有通配符或正则表达式路由之前定义。
Kotlin 是继 Java 之后 JVM 上最重要的语言就2021年JVM生态系统报告来看,Java 最受欢迎,91%,Kotlin 次之,接近 18%,虽然 JVM 语言的种类在过去几年中有所增长,但 Java 处于领先地位。超过 90% 的开发人员使用 Java,我们可以看到它仍然是一种非常流行的语言。Kotlin 的受欢迎程度却比我们去年想象的要广泛得多。令人印象深刻的是,17.7% 的开发人员在生产中使用 Kotlin。谷歌I/O大会上宣布用Kotlin语言作为首选语言Kotlin对于And
上机实验习题上机实验要求及规范C程序设计具有比较强的理论性,同时也具有较强的可应用性和实践性。在上机实验是一个重要的教学环节。具体实习步骤如下:1.问题分析与系统结构设计充分地分析和理解问题本身,弄清要求做什么(而不是怎么做),限制条件是什么。按照以数据结构为中心的原则划分模块,搞清数据的逻辑结构(是线性表还是树、图?),确定数据的存储结构(是顺序结构还是链表结构?)。然后设计有关操作的函...
#include<iostream>#include<opencv2\opencv.hpp>using namespace std;using namespace cv;int main(){ Mat img_fish = imread("a.bmp", 1); Size image_size = img_fish.size(); Mat mapx =...
https://blog.csdn.net/qq_23261197/article/details/87883614?tdsourcetag=s_pcqq_aiomsg
------- android培训、java培训、期待与您交流! ----------
1.1 执行请求HttpClient的最重要的功能是执行HTTP方法。一个HTTP方法的执行涉及到一个或多个HTTP请求或HTTP响应的交流,HttpClient通常是在内部处理的。用户将提供一个执行请求对象,HttpClient发送请求到目标服务器返回一个相应的响应对象,如果执行失败则抛出一个异常。所以,HttpClient API的主要切入点是HttpClient的接口,
苹果Mac OS X操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在Mac终端输入命令。 显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写): 显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true隐藏Mac隐藏文件的命令:defaults write com.apple.fin
1)要关联的字段类型或长度不一致。2)两个要关联的表编码不一样。3)两个关联的字段的编码不一样。字段的约束不影响添加外键
题目来自于:https://www.acmcoder.com/#/practice/code**题目描述:**易位法字符串加密密码学是一门既古老又年轻的学科。说它古老,是因为早在几千年前,人类就已经有了通信保密的思想,并先后出现了易位法和置换法等加密方法。到了1949年,信息论的创始人香农(C.E.Shannon)论证了由传统的加密方法所获得的密文,几乎是都可攻破的,这使得密码学的研究面临着严重的危机。 直至进入20世纪60年代,由于电子技术和计算机技术的迅速发展,以及结构代数、可计算性理论学科研究.
本章是花费大好多功夫整理总结的,某种意义上算原创。文中大量内容是引用的,请见谅。文中比的比较仅到Armv8-M架构的Cortex-M33,没涉及后续新版本(也没法预计到)。目录1 ARM处理器分类2 基于Thumb-2技术的Thumb指令集3 参考资料1 ARM处理器分类ARM的老产品树:1、第一级——架构:ARMv4~ARMv62、第二级——产品系列:如AR...
大数据技术实战---业务数据数仓搭建问题导读:1、业务数据数仓如何搭建?2、如何设计ods层、dwd层、dws层?3、如何设计GMV成交总额、转化率、品牌复购率?4、如何设计拉链表?6.8 业务数据数仓搭建sqoop导数据的原理是mapreduce,import 把数据从关系型数据库 导到 数据仓库,自定义InputFormat,export 把数据从数据仓库 导到 关系型数据库,自定义OutputFormat,用sqo...