Yii url createUrl redirect相关

一篇文章:

在yii中明明白白生成网址:

在Yii中经常要生成URL,不管是为了自动跳转还是仅仅是一个链接。下面对Yii中的URL生成做了一个总结。
提示:以下controllerX代表控制器X,actionX代表方法X。
在Controller::action中,我们要输出一个链接,可以这样做:
$this->createUrl(‘actionName’, array(‘params01′=>’value01′, ‘params02′=>’value02′) );
//Controller::createUrl($route,$params=array(),$ampersand=’&’)

第一个参数是一个字符串,值为路由名。比如action01、controller01/action01等格式。 第二个参数是一个数组,值为所有参数的key=>value对。 第三个参数是URL中每对参数之间的分隔符,一般默认为&不做修改。
假设我们在Controller01::action01中,想要生成指向action02的URL,可以这样做:
$this->createUrl(‘action02′ );

假设我们在Controller01::action01中,想要生成指向controller02::action02的URL,可以这样做:
$this->createUrl(‘controller02/action02′ );

若action02是默认action,比如index,那么可省略,但最后的斜杠不可省略,即:
$this->createUrl(‘action02/’ );

斜杠放在最前面即不管代码存在于哪个module下或者哪个controller下,都从整个网站的最顶成生成URL。假设我们的代码存在于user模块的password控制器的reset方法下,下面的代码将会生成不同的URL:
$this->createUrl(‘/abc’); //生成 /abc
$this->createUrl(‘/abc/efg’); //生成 /abc/efg
$this->createUrl(‘abc’); //生成 /user/password/abc
$this->createUrl(‘abc/’); //生成 /user/abc
$this->createUrl(‘abc/efg’); //生成 /user/abc/efg

在layout中,由于$this就是所属的控制器,所以与上面相同。
使用Yii::app()->getController()->createUrl(),来生成URL与上面相同。
使用Yii::app()->createUrl(),这时候路由名就不会自动增加当前Module名和当前Controller名,其他的同上。
在redirect时,有时候我们需要进行用户的转向,比如登录成功就转向到用户信息界面,可以这样做:
$this->redirect(array(‘index’, ‘params01′=>’value01′, ‘params02′=>’value02′));
//redirect($url,$terminate=true,$statusCode=302)

redirect方法接受的第一个参数是一个数组,数组的第一个值就是路由名,剩下的就是所有的参数值。上面的转向URL相当于直接使用下面代码生成的URL:
$this->createUrl(‘index’, array(‘params01′=>’value01′, ‘params02′=>’value02′) );

可以看出,$this->createUrl第三个参数在redirect中是无法设置的。
而redirect方法的第二个参数$terminate表示是否执行时就终结代码的运行并立即转向,一般保持默认。
第三个参数$statusCode表示转向的时候给浏览器发送的状态代码,一般保持默认,具体的状态代码表示的意思可以Google一下“网页状态码”。
最底层:
上面所有的生成URL的方式都最终转到了下面的代码:
UrlManage::createUrl($route,$params,$ampersand);

它与Yii::app()->createUrl()唯一的不同点是后者将$route进行了整理:trim($route,’/’)
当你需要用到URL的时候,又一时不清楚参数的格式,最好的方式就是看看这个方法的代码,然后你就会恍然大悟。这也是学习和实践PHP时的好习惯。

转自:http://hi.baidu.com/pingxlz/item/a4392b180d33631de2f986e4

更多:

http://www.cnblogs.com/likwo/archive/2012/06/09/2543312.html

Yii url createUrl redirect相关,布布扣,bubuko.com

时间: 2024-10-19 16:08:21

Yii url createUrl redirect相关的相关文章

说点关于Yii的 Yii::app()->createUrl 与 CHtml::normalizeUrl 使用的问题

现在说下问题,请看下面的这段代码: $words = array(); foreach ($items as $item) { $tmp['link'] = CHtml::link($item['searchword'], CHtml::normalizeUrl(array('list/search', 'name' => urlencode($item['searchword'])))); $words[] = $tmp; unset($tmp); } 这是我又在查找项目哪有问题时,发现的一个

yii url美化 urlManager组件

yii的官方文档对此的解释如下: urlSuffix  此规则使用的url后缀,默认使用CurlManger::urlSuffix,值为null.例如可以将此设置为.html,让url看起来“像”是一个静态页面. caseSensitive  是否大小写敏感,默认使用CUrlManager::caseSensitive,值为null. defaultParams  该规则使用的默认get参数.当使用该规则来解析一个请求时,这个参数的值会被注入到$_GET参数中. matchValue  当创建一

IIS URL Rewrite redirect from one Domain to another

IIS URL Rewrite enables Web administrators to create powerful rules to implement URLs that are easier for users to remember and easier for search engines to find.For more information you can read the below url: http://www.iis.net/downloads/microsoft/

使用PHP预定义变量得到url地址及相关参数

获取url地址栏参数多种方法:$_SERVER["SERVER_PORT"]//获取端口$_SERVER['HTTP_HOST']//获取域名或主机地址 如www.sina.com或者music.sina.com $_SERVER['SERVER_NAME']//获取域名或主机地址 注:只是主域名 如sina.com$_SERVER["REQUEST_URI"]//获取域名后的详细地址 如:/index.php?id=1 ...$_SERVER['PHP_SELF'

[AngularJS] Store the entry url and redirect to entry url after Logged in

For example when a outside application need to visit your app address: https://www.example.com/#/lobby/abc But before enter '/lobby/abc', user need to login, so the application will redirect user to https://www.example.com/#/login Now what you want i

url、http相关

A:各种对象的区别: 1.self:当前窗口对象(如果是在iframe里,则为该框架的窗口对象) 2.top:父窗口对象 3.window:典型情况下,浏览器会为每一个打开的html创建对应的window对象,如果这个文档包含了多个框架,则浏览器会为原始文档建立一个window对象,再为每个框架创建额外的window对象.可以在当前窗口中直接使用window的全部属性.方法和集合. 4.location:该对象包含当前url信息,拥有多个属性.默认属性为 location.href,表示整个ur

IIS下 Yii Url重写

下载URL重写组件 http://www.microsoft.com/zh-cn/download/details.aspx?id=7435 导入官方提供的.htaccess文件 Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{RE

django中的url重定向----redirect

1.记得要先导入redirect 2.打开访问路径 提交信息之后就会跳转到指定的链接 原文地址:https://www.cnblogs.com/learning-python/p/10247094.html

yii create url (一)

1.$this->redirect这里的$this是当前的controller.可能是应用程序的也 可能是模块下的 这里仅将解一下第一个参能是url,当url是一个字符串时,它会自己动跳转 如$this->redirect('/'); 会跳转到站点根,如果你的当前主机为localhost, 那么他就会跳到http://localhost/ 再者$this->redirect('/books');,则会跳到http://localhost/books 在应用程序的controller中,也