php用法实例分析,CodeIgniter框架URL路由总结
分类:面向对象

URI 路由

本文实例分析了CodeIgniter配置之routes.php用法。分享给大家供大家参考,具体如下:

平常的话,ULANDI字符串有着和它独一对应的调整器(controller卡塔尔类/方法。UGL450I的逐个部分是之类形式(pattern卡塔尔国:
复制代码 代码如下:
example.com/class/function/id/

application/config/routes.php中定义了贰个名称为$route的数组,用来安装默许路由和404页面以致能够安装有个别协作情势。

可是在一些例证中,你可能想重定向这种关联来调用三个两样的类/方法(class/function卡塔尔(قطر‎,实际不是与UEnclaveL一一对应(的调用卡塔尔(قطر‎.

暗许的安插如下:

比如,你也许想使您的U帕杰罗L接纳这种原型(prototypeState of Qatar:
复制代码 代码如下:
example.com/product/1/
example.com/product/2/
example.com/product/3/
example.com/product/4/

$route['default_controller'] = "welcome";
$route['404_override'] = '';

雷同景色下,U路虎极光L的第叁个部分代表方法名,但是在上头的例子中,它代表一个产物的ID。CodeIgniter能够兑现这么些效应,让客商能够再一次定向(remapState of QatarUTiggoI管理程序.

default_controller钦赐默许的调节器名称,404_override钦定当出现404时调用的调整器名称。临时候也许现身深入分析不成功,或许间接在暗中同意页面,大家得以调用$this->router打字与印刷一下脚下深入分析的调节器和Acion名称。比方能够在MY_Controller中如下打字与印刷:

设定你和睦的路由法则

var_dump($this->router->fetch_directory());
var_dump($this->router->fetch_class());
var_dump($this->router->fetch_method());

  路由准则定义在application/config/routes.php 文件中. 在这里文件中,你能够观望二个名为$route的数组,它能够令你定义你自身的路由准则。 定义能够用三种艺术: 通配符(wildcards卡塔尔 恐怕 正则表明式(Regular Expressions卡塔尔国

规定下拆解深入分析到哪些调控器了, 然后在寻访ULX570L的布署、服务器配置,甚至能够在Router.php 和U库罗德I.php中调理下。

通配符

$route数组也得以通过通配符(:num, :any)、正则来安装重写法则,下边是有的精短的事例:

  二个优越的通配符路由看起来是如此的:
复制代码 代码如下:
$route['product/(:num)'] = "catalog/product_lookup";

1、将 央求解析到 处理。
Codeigniter并不协助包括查询字符串的重写法则,这几个准则看起来应当这么写:

  在七个路由中,数组的键包涵着被相配的U奇骏I,而数组的值包涵着路由将被重定向的指标地.在上头的例证中,假诺单词“product”出未来UCRUISERL的首先个部分中,何况数字(:num卡塔尔出今后UXC90I的第1个部分中,"catalog"类和"product_lookup"方法将被代替利用(将要被重定向State of Qatar.

$route['admin/detail_(:num)'] = 'admin/detail?user_id=$1';

  你能够相配文字的值大概选用以下两种通配符类型:

但实际上未有生效,程序相配到admin/detail?user_id=1后用"/"分隔,索引为0的为操纵器名,索引为1的为形式名,也正是会将方面的detail?user_id=1赋值给艺术名,结果简单的说就404了。搞清分隔原理后方可在detail前面扩充三个斜杠,确认保障类名和方法名的对的,如:

  :num 将合营一个只包涵有数字的segment(段卡塔尔(قطر‎.

$route['admin/detail_(:num)'] = 'admin/detail/?user_id=$1';

  :any 将非常任何字符(可以是三个segment段卡塔尔(قطر‎.能够相称七个值,如:

但当时又存在参数的得到问题了,会将第五个参数字传送递给艺术,假如急需运用$_GET恐怕$this->input->get获取还供给对参数实行管理,如:

  $route['product/(:any)'] = "catalog/product_lookup/$1/$2/$3/$4/$5"; //将整条url上的每三个参数全体传递给catalog调整器下的 product_lookup方法。

parse_str(ltrim($query_string, '?'), $_GET);

  注意: 路由将会鲁人持竿定义的相继来运营.高层的路由总是优先于低层的路由.

2、对PATH_INFO的U瑞鹰L情势重写准绳依然相比较帮助的。如要达成

例子

$route['admin/(:num)'] = 'admin/detail/$1';

上边是一对简洁明了的例证:

参数的得到就只可以通过段落的主意来得到了。

复制代码 代码如下:
$route['journals'] = "blogs";

在意: 路由将会安分守己定义的相继来运营.高层的路由总是优先于低层的路由.

  要是U普拉多L的首先个分支(类名卡塔尔国是首要字"journals",那么将会重定向到"blogs"类中管理.

最终,能利用CI来设置的路由依然建议选择CI来安装,不依据服务器配置。

复制代码 代码如下:
$route['blog/joe'] = "blogs/users/34";

  假若UHavalL的前四个分支是"blog"和"joe",那么将会重定向到"blogs"类的"users"方法中处理.何况将ID"34"设为参数.

复制代码 代码如下:
$route['product/(:any)'] = "catalog/product_lookup";

  当"product"作为UPanameraL中首先个支行时, 无论第二分段是怎么都将被重定向到"catalog"类的"product_lookup"方法.

复制代码 代码如下:
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";

  当“product”作为 U福特ExplorerL 中第叁个支行时,假使第二分段是数字,则将被重定向到“catalog”类,并传递所相配的源委到“product_lookup_by_id”方法中。

  重要提示: 不要在日前或前面加"/".

  正则表明式

  倘诺您垂怜可以利用正则表明式来自定义你的路由法则. 任何有效的正则表明式都以被允许的, 以至逆向援用.

  注意: 假如您选用逆向引用请将双反斜线语法替换为英镑符语法(\1 替换为 $1).

  叁个超人的正则表明式看起来像上面的标准:
复制代码 代码如下:
  $route['products/([a-z]+)/(d+)'] = "$1/id_$2";

上例中, 相似于 products/shirts/123 的U昂科雷I 将换到调用 shirts 调控器类的 id_123 方法.

您也得以勾兑使用通配符与正则表明式.

系统保留的路由

系统会保留多个路由:

首先个为系统私下认可的路由:

复制代码 代码如下:
$route['default_controller'] = 'welcome';

其一路由注明了当U奥迪Q7I中不含有要访谈的类和调节器新闻的(即只访谈根目录的场地,如 "welcome" 这几个类(调整器State of Qatar。你应有有限支持设置三个私下认可路由,不然你的首页将会显得 404 错误。

第一个为404页面包车型的士路由:
复制代码 代码如下:
$route['404_override'] = '';

以此路由标记了固然央浼的调整器不恐怕访谈的时候将加载哪个调整器。它相当于覆盖了默许的404荒唐页面(即提供了团结定义404页面包车型客车意义State of Qatar。但它不会影响show_404(State of Qatar那几个法子,那么些办法仍旧会加载暗中同意的放在application/errors/error_404.php的error_404.php页面。

根本: 保留的路由应该在具有通配符或正则表明式路由从前定义。

本文由10bet手机官网发布于面向对象,转载请注明出处:php用法实例分析,CodeIgniter框架URL路由总结

上一篇:Web开发框架,连贯操作使用方法 下一篇:没有了
猜你喜欢
热门排行
精彩图文