`

$this->redirect ,Yii::app()->createUrl的路由设置

    博客分类:
  • YII
 
阅读更多
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的参数区别。

[转载] http://blog.csdn.net/jimlong/article/details/8227243
分享到:
评论

相关推荐

    PHP YII 发送邮件扩展

    PHP YII 发送邮件扩展 使用方法: $mail = new YiiMailer();...$mail-&gt;setTo(Yii::app()-&gt;params['adminEmail']); $mail-&gt;setSubject('Mail subject'); $mail-&gt;setBody('Simple message'); $mail-&gt;send();

    redis使用方法

    D:\&gt;cd D:\Program Files\Redis D:\Program Files\Redis&gt; redis-cli.exe -h 127.0.0.1 -p 6379 ...$activity = Yii::$app-&gt;redis-&gt;get('activity_goods:' . $goods_id); $arr = json_decode($activity, true);

    php-oauth2-for-yii:自动从code.google.compphp-oauth2-for-yii导出

    $app = $oauth-&gt;getClients($auth_params['client_id']);if($_POST){ //add your verify username and password code here; //$user_id = User::model()-&gt;getIdByUsername($_POST['username']); $oauth-&gt;setVariable...

    Yii框架实现邮箱激活的方法【数字签名】

    $email=Yii::$app-&gt;request-&gt;get('email'); //数字签名 $em_1=md5($email); //邮箱发送 $mail= Yii::$app-&gt;mailer-&gt;compose(); $mail-&gt;setTo($email); $mail-&gt;setSubject("激活邮箱"); //发布可以带html标签...

    yii2-user-agent:https

    yii2-用户代理 https://github.com/donatj/PhpUserAgentcomposer.json " require " : { " xj/yii2-user-agent " : " ~1.0.0 "}用法 //Avar_dump (\xj\ua\ UserAgent :: model ()-&gt; getAttributes ());//B$ ...

    db-cahce-yii2-component:Yii2 组件,缓存 sql-requests 结果,然后根据此结果(数组)创建模型

    *设置: 'dbCache' =&gt; [ 'class' =&gt; 'app\components\DbCache' ], *通过 ID 查找用户(及其帖子和评论): $query = User::find() -&gt;with(['posts', 'comments']) -&gt;where(['user_id' =&gt; $userId]); $user = Yii::...

    Yii框架页面渲染操作实例详解

    yii的页面渲染通过在controller的action中调用$this-&gt;render($viewname...)进行,流程如下图: 在render方法中,yii会先对你的view文件进行渲染,然后如果你使用了某些layouts,则会将view渲染的输出再传入对...

    基于PHP实现的社区团购源码+项目说明.zip

    密码service层进行更改,如果有问题,控制器之间复制加密和校验 加密:$hash_password = Yii::$app-&gt;security-&gt;generatePasswordHash('123456'); 校验:$bool = Yii::$app-&gt;security-&gt;validatePassword($password, $...

    yii1-db-seeder:Yii1数据库播种机

    Yii1 Db播种机Yii2 Db播种器是用于器的Yii1适配器,这是一种使用假数据快速填充数据库的工具。安装安装此扩展的首选方法是通过 。 无论运行$ composer require tebazil/yii1-db-seeder 或添加"tebazil/yii1-db-...

    Yii2使用$this-context获取当前的Module、Controller(控制器)、Action等

    对于这些问题Yii2可以在视图层View中使用$this-&gt;context这个对象去获得。 示例:譬如现在(视图层登陆界面)login.php方法下面: &lt;?php //得到Yii2的当前的控制器Controller echo $this-&gt;context-&gt;id; //输出结果:...

    vk-app-template:使用在服务器端的 yii2 php 框架和客户端的backbone.js 上编写的样板启动您的 vk iframe 应用程序

    写在 yii2/backbone 上的 vk 应用模板 如何设置 克隆; chmod 0777 运行时; chmod 0777 网络/资产; 创建数据库; 编辑 config/db.php - 填写您的数据库设置;...\Yii:$app-&gt;user-&gt;identiry-&gt;las

    Phpexcel Demo

    $status = Yii::$app-&gt;request-&gt;get('status'); switch ($status){ case 1 : $data = VipWithdrawDeposit::find()-&gt;where(['status'=&gt;1])-&gt;all();//待转账记录表 break; case 3 : $data = VipWithdrawDeposit...

    yii2-giiant-twig:Yii 2 Giiant 模块的 Twig 模板

    yii2-giant Giiant Yii2 代码生成器的 Twig 模板它是什么? 此扩展为来自 Giiant 的 CRUD 模型提供了 twig 模板语言的模板。 在 yii2 上下文中还没有可用于 twig 的模板,所以这应该为那些想要使用 twig 的人节省...

    yii2-psr7-bridge:用于Yii2的PSR7桥和PSR-15适配器

    此网桥的用例是使Yii2可以与PSR-7和PSR-15中间人以及诸如RoadRunner和PHP-PM之类的任务运行器一起使用,而对您的应用程序的代码更改最少(例如,无需更改对Yii::$app-&gt;request任何调用Yii::$app-&gt;request和Yii::$...

    yii-i18n-attribute-messages:ActiveRecords 的透明属性翻译,利用 Yii 的内置翻译功能检索翻译的属性内容

    该行为然后透明地将$book-&gt;title转换为Yii:t('attributes.Book.title', $book-&gt;_title)并将$book-&gt;title_de转换为Yii:t('attributes.Book.title', $book-&gt;_title, array(), null, 'de') ,同时通过在模型中分配和...

    yii2-opengraph:Yii 2 的开放图实现

    通过对象使用 Yii::$app-&gt;opengraph-&gt;title = 'My_Article';Yii::$app-&gt;opengraph-&gt;description = 'My_Article_Description';Yii::$app-&gt;opengraph-&gt;image = 'http://image.for.my/article';return $this-&gt;render('...

    yii中widget的用法

    本文实例讲述了yii中widget的用法。分享给大家供大家参考。具体分析如下: WIDGET定义很简单,如果你在/protected/widget/test/下建立了一个名为“testWidget.php”的widget。 在视图中调用需要这样写: 复制代码 ...

    yii2-scroll-pager:用于滚动分页的 Yii2 扩展

    滚动页面时自动 Ajax 分页 描述 安装 ... if ( $ ids = Yii :: $ app -&gt; getRequest ()-&gt; post ( 'notid' , Yii :: $ app -&gt; getRequest ()-&gt; getQueryParam ( 'notid' ))) { $ ids = array_map

    yii2-shopping-cart:yii2的购物车扩展

    Yii 2的购物车此扩展添加了Yii Framework 2.0的购物车安装安装此扩展的首选方法是通过 。 无论运行... public function getPrice () { return $ this -&gt; price ; }

    yii2-browser-info:Yii2扩展名。 提供有关浏览器的详细信息

    yii2-浏览器信息 Yii2扩展名。 提供有关浏览器的详细信息。 当前可用的提供商: Browscap( ) 安装 安装此扩展的首选方法是通过 。... Yii :: $ container -&gt; set ( 'asu\browserinfo\BrowserInfo' ,

Global site tag (gtag.js) - Google Analytics