ThinkPHP的URL操作
一、URL大小写
//URL可以不区分大小写
"URL_CASE_INSENSITIVE"
=>true
PS:
a、如果开启了不区分大小写,那么对于 UserTypeController.class.php
这样的控
制器就需要如下访问方式:
http://localhost/demo39/index.php/home/user_type/index/
b、如果区分大小写,则是这样:
http://localhost/demo39/index.php/Home/UserType/index/
二、URL伪静态
1、默认情况下,伪静态后缀为.html
http://localhost/demo39/User/index.html
http://localhost/demo39/User/index/id/5.html
2、设置伪静态后缀,默认为html
"URL_HTML_SUFFIX"=>"shtml",
http://localhost/demo39/User/index.shtml
3、如果设置为空,那么就任意后缀
"URL_HTML_SUFFIX"=>"",
4、如果设置为空,可以用__EXT__常量获取当前使用的后缀
{$Think.const.__EXT__}
5、设置可以伪静态的后缀
"URL_HTML_SUFFIX"=>"html|shtml|xml",
6、禁止访问的后缀
"URL_DENY_SUFFIX"
=> "html|pdf|ico|png|gif|jpg",
三.URL 生成
ThinkPHP 内置了一个 U()方法,用于
URL 的动态生成。
定义格式:U("地址表达式",["参数"],["伪静态后缀"],["显示域名"])
1、默认得到当前URL
echo U(); ///demo39/User/index.html
地址表达式的格式如下:
[模块/控制器/操作#锚点@域名]?参数
1=值 1&参数
2=值 2...
2、控制器+方法
echo U("User/add");
///demo39/index.php/User/add.html
3、控制器+方法+?参数1=值1
echo U("User/add?id=5");
///demo39/index.php/User/add/id/5.html
4、模块+控制器+方法+?参数1=值1
echo U("Admin/User/add?id=5");
///demo39/index.php/Admin/User/add/id/5.html
U()方法第二个参数可以分离参数和值的操作,支持字符串和数组的写法。
5、使用数组参数1=值1,参数2=值2
echo U("User/add",array("id"=>5,"type"=>"a"));
///demo39/index.php/User/add/id/5/type/a.html
6、使用字符串参数1=值1,参数2=值2
echo U("User/add","id=5&type=a");
///demo39/index.php/User/add/id/5/type/a.html
PS:不允许使用 PATHINFO
模式的路径来编写路径,比如:
echo U("User/add/id/1/type/a");
///demo39/index.php/1/type/a.html,这个生成的 URL
是错误的
U()方法第三个参数可以指定伪静态后缀,比如:
7、指定伪静态后缀
echo U("User/add",array("id"=>5),"xml");
///demo39/index.php/User/add/id/5.xml
8、设置"URL_MODEL"=>0,普通模式后URL生成将如下:
//demo39/index.php?m=&c=User&a=add&id=5
//设置"URL_MODEL"=>1,PATHINFO模式后URL生成将如下:
///demo39/index.php/User/add/id/5.html
//设置"URL_MODEL"=>2,REWRITE模式后URL生成将如下:
///demo39/User/add/id/5.html
//设置"URL_MODEL"=>3,兼容模式后URL生成将如下:
///demo39/index.php?s=/User/add/id/5.html
PS:在这里我们使用
REWRITE 重写模式,它是
PATHINFO 的升级版,地址最短。
我们也可以生成路由地址,使用路由的规则生成的地址:
9、规则路由
"u/:idd"=>"User/index",
//生成规则路由地址
echo U("/u/5");
///demo39/u/5.html
//生成正则路由地址
"/^u_(d+)$/"=>"User/index?id=:1",
echo U("/u_5");
///demo39/u_5.html
//域名支持
echo U("User/add@www.ycuk.com?id=5");
//http://www.ycuk.com/demo39/index.php/User/add/id/5.html
//锚点支持
echo U("User/add#comment?id=5");
///demo39/User/add/id/5.html#comment
四.模版中的 U
我们之前使用 U()方法,都是在控制器里实现的。但实际用途中,大量的超链接是在模
版中设置的,而在控制器把 U()当变量传递过去,有点过于繁杂。所以,我们可以在模版使
用使用 U()方法。
//在模版中使用U()方法
{:U("User/add", array("id"=>5))}
- 上一篇: ThinkPHP 模版中的内置标签
- 下一篇:没有了