1、URL模式(tp3.2版本的标准格式)
URL_MODEL: 0 1 2 3
如:http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]
0 【普通模式】也就是传统的GET传参方式来指定当前访问的模块和操作:
http://localhost/?m=home&c=user&a=login&var=value,m参数表示模块,c参数表示控制器,a参数表示操作(当然这些参数都是可以
配置的),后面的表示其他GET参数
1 【PATHINFO模式是系统的默认URL模式】,提供了最好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境:
http://localhost/index.php/home/user/login/var/value/ PATHINFO地址的前三个参数分别表示模块/控制器/操作。
PATHINFO模式下面,依然可以采用普通URL模式的参数方式,例如: http://localhost/index.php/home/user/login?var=value 依然
是有效的
PATHINFO模式下面,URL是可定制的,例如,通过下面的配置:
// 更改PATHINFO参数分隔符
'URL_PATHINFO_DEPR'=>'-',
2 【REWRITE模式】是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置
WEB服务器的重写规则:
http://localhost/home/user/login/var/value 如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
3 【兼容模式】是用于不支持PATHINFO的特殊环境,URL地址是:
'VAR_PATHINFO' => 'path', //更改兼容模式变量的名称定义
'URL_PATHINFO_DEPR'=>'-', //PATHINFO参数分隔符对兼容模式依然有效
使用以上配置的话,URL访问地址可以变成: http://localhost/?path=/home-user-login-var-value2、快捷函数
U方法,用于URL的动态生成
U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])
地址表达式的格式定义如下:[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...
echo U("控制器/操作方法");查看具体url路由解析模式
U('User/add') // 生成User控制器的add操作的URL地址
U('Blog/read?id=1') // 生成Blog控制器的read操作 并且id为1的URL地址
U('Admin/User/select') // 生成Admin模块的User控制器的select操作的URL地址
U('Blog/cate',array('cate_id'=>1,'status'=>1))
U('Blog/cate','cate_id=1&status=1')
U('Blog/cate?cate_id=1&status=1')
伪静态后缀:U函数会自动识别当前配置的伪静态后缀,如果你需要指定后缀生成URL地址的话,可以显式传入,例如:
U('Blog/cate','cate_id=1&status=1','xml');
C(名称) 获得配置变量(convertion.php config.php)信息
C(名称,值) 设置配置变量信息
L() 获得语言变量信息
E() 给页面输出错误信息3、跳转和重定向
重定向:控制器的redirect方法和redirect函数的区别在于前者是用URL规则定义跳转地址,后者是一个纯粹的URL地址。
$this -> redirect('模块/操作',参数,延迟,提示信息);
$this->redirect('Public/login'); //快速跳转
$this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...'); //重定向到New模块的Category操作
redirect('/New/category/cate_id/2', 5, '页面跳转中...'); //重定向到指定的URL地址
页面跳转:success方法的默认跳转地址是$_SERVER["HTTP_REFERER"],error方法的默认跳转地址是javascript:history.back(-1);
默认的等待时间success方法是1秒,error方法是3秒
$this->success('操作完成','/Article/index',3); // 操作完成3秒后跳转到 /Article/index
$this->error('操作失败','/Article/error',5); // 操作失败5秒后跳转到 /Article/error
默认的设置的两个方法对应的模板是(配置文件修改):
'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl', //默认错误跳转对应的模板文件
'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl', //默认成功跳转对应的模板文件
也可以使用项目内部的模板文件:
'TMPL_ACTION_ERROR' => 'Public:error', //默认错误跳转对应的模板文件
'TMPL_ACTION_SUCCESS' => 'Public:SUCCESS', //默认成功跳转对应的模板文件本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn