yii create url (一)

1.$this->redirect这里的$this是当前的controller。可能是应用程序的也
可能是模块下的
这里仅将解一下第一个参能是url,当url是一个字符串时,它会自己动跳转
如$this->redirect(‘/‘); 会跳转到站点根,如果你的当前主机为localhost,
那么他就会跳到http://localhost/
再者$this->redirect(‘/books‘);,则会跳到http://localhost/books
在应用程序的controller中,也可以使用$this->redirect(‘books‘);
也会跳到http://localhost/books
但是当你在module中这样使用,则会出现另一种情况,
当你打开urlManager,并设置了隐藏脚本文件,输入
如果你当前的访问地址为

http://localhost/admin/default/index

当使用$this->redirect(‘books‘); 跳转, 跳转后地址则是

http://localhost/admin/default/books

这里只是说一下,redirect的简单跳转,我个人建议,如果不是跳到其他项目,
或外站$this->redirect(‘http://yiibook.com‘);,建议都使用下面的方法
url使用数组
当url为数组时,会调用urlManager来根据路由组织跳转的路径,这种情况比较理想,而且会根据路由
的修改而改变
如果有一条路由为
‘book‘=>‘admin/default/index‘
格式为:‘路由‘=>‘真实地址‘,
即指定了访问book,就相当于方问admin模型下的default控制器的index操作方法。
既然使用了路由,主要是为了让url更友好,并隐藏真实地址

那么,当想使用$this->redirect跳转到这个路由时,需要指定真实地址,如
$this->redirect(array(‘admin/default/index‘));
这样就会跳到这个地址了,而且url显示的确是book,而当你修路由名称时,如
‘books‘=>‘admin/default/index‘,或干脆去掉这个路径,都不用修改你的程序

在模块中的情况,如果你当前在admin模块的controller中,使用跳转,则可以不用写moduleId
直接使用$this->redirect(array(‘default/index‘)); 也是ok的,这样你的module也不会
依赖于moduleId了
再有如果你当前也在admin模块下的default控制器中,也可以使用
$this->redirect(array(‘index‘));进行跳转,不依赖于控制器的名字

我们再看一下带参数的路由
‘book<id:\d+>‘=>‘admin/default/index‘
那么,url需要为这个路径传递一个参数id,如
$this->redirect(array(‘admin/default/index‘, ‘id‘=>1));

url格式为array(‘真实路径‘, ‘参数名‘=>‘参数值’,‘参数名2‘=>‘参数值2‘, ....);
Yii中许多组件或方法都有支持这种url的格式,如CMenu等等。

2.createUrl,有$this->createUrl和Yii::app()->createUrl,
createUrl它会根据真实地址,组织成路由格式的地址
根据上面的路由,创建url
$this->createUrl(‘admin/default/index‘)
带参数情况
$this->createUrl(‘admin/default/index‘, array(‘id‘=>1));

admin模块中,使用
$this->createUrl(‘default/index‘);或$this->create(‘index‘);
不要使用Yii::app()->createUrl,避免依赖于具体的路由

注意一下redirect与createUrl的参数区别。
时间: 2024-10-27 17:17:27

yii create url (一)的相关文章

yii create url (二)

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

Yii的URL助手

Url 帮助类 ? 获得通用 URL 记住 URLs 检查相对 URLs Url 帮助类提供一系列的静态方法来帮助管理 URL. 获得通用 URL ? 有两种获取通用 URLS 的方法 :当前请求的 home URL 和 base URL . 为了获取 home URL ,使用如下代码: $relativeHomeUrl = Url::home(); $absoluteHomeUrl = Url::home(true); $httpsAbsoluteHomeUrl = Url::home('ht

Yii常用URL及获取IP地址

当前页面:Yii::app()->request->url;跳转前一个页面:$this->redirect(Yii::app()->request->urlReferrer);根目录URL:Yii::app()->baseUrl 或 Yii::app()->request->baseUrl;自定义URL:$this->createUrl(‘post/read’,array(‘id’=>100)) 或 Yii::app()->createUr

plus.webview.create( url, id, styles, extras )参数及说明

plus.webview.create( "xxx.html", //url:String类型,可选,新窗口加载的HTML页面地址.新打开Webview窗口要加载的HTML页面地址,可支持本地地址和网络地址. "xxx", //id:String类型,可选,新窗口的标识.窗口标识可用于在其它页面中通过getWebviewById来查找指定的窗口,为了保持窗口标识的唯一性,应该避免使用相同的标识来创建多个Webview窗口.如果传入无效的字符串则使用url参数作为We

yii请求url

yii\web\Request::url:返回 /admin/index.php/product?id=100, 此URL不包括host info部分. yii\web\Request::absoluteUrl:返回 http://example.com/admin/index.php/product?id=100, 包含host infode的整个URL. yii\web\Request::hostInfo:返回 http://example.com, 只有host info部分. yii\w

Yii 1.0 伪静态即Yii配置Url重写(转)

第一步:配置 URL Management(网址管理) 只需要在config文件夹下面的main.php文件中进行配置就好了 'components' => array( 'urlManager' => [ 'showScriptName' => false,//这里是隐藏index.php那个路径的 'urlFormat' => 'path', 'rules' => [ '<controller:\w+>/<id:\d+>' => '<c

Yii 获取url 的一些方法

原文出处http://blog.csdn.net/iefreer/article/details/21325371 1. 获取url中的host信息: Yii::app()->request->getHostInfo() 2. 获取url中的路径信息(不包含host和参数): Yii::app()->request->getPathInfo() 3. 获取不包含host信息的url(含参数): Yii::app()->request->url 或者 Yii::app()

YII入门——URL Manager配置

第一步:开启apache的rewrite模块 (1)去掉LoadModule rewrite_module modules/mod_rewrite.so前面的注释 (2)将<Directory "${SRVROOT}/htdocs">中的AllowOverride None设置为AllowOverride All 第二步:设置YII项目中config目录下的web.php文件,在components参数中新增: 'urlManager' => [ 'enablePre

Yii 1.0 伪静态即Yii配置Url重写

今天学习那个yii的时候,觉得URL太麻烦,想自己配置一下,于是就百度了一下,然后自己总结下,留着后面配置的时候看看. yii框架中有个很重要的组件:URL Management(网址管理) 进行yii伪静态就是只需要配置这个就可以了. 没有配置之前是这个样子的: 配置成功后的URL就是这样的: 第一步:配置URL Management(网址管理) 只需要在config文件夹下面的main.php文件中进行配置就好了 'components' => array( 'urlManager' =>