`

$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();

    在yii中新增一个用户验证的方法详解

    Yii::app()-&gt;user-&gt;login($identity); } else { echo $identity-&gt;errorMessage; } ``` 当用户退出时,调用`logout()`方法: ```php Yii::app()-&gt;user-&gt;logout(); ``` `Yii::app()-&gt;user` 是Yii中的一个组件,它...

    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标签...

    PHP同时修改多个属性的值

    根据提供的文件信息,这里主要涉及的是Apache服务器配置与虚拟主机设置。然而,关于“PHP同时修改多个属性的值”的主题并没有在给定的信息中明确体现出来。为了更好地满足您的需求,我们将围绕“PHP同时修改多个属性...

    datagrid+yii2分页查询

    if ($model-&gt;load(Yii::$app-&gt;request-&gt;post()) && $model-&gt;save()) { return $this-&gt;redirect(['view', 'id' =&gt; $model-&gt;id]); } return $this-&gt;render('update', [ 'model' =&gt; $model, ]); } public ...

    Yii中表单用法实例详解

    $this-&gt;_identity = new UserIdentity($this-&gt;username, $this-&gt;password); if (!$this-&gt;_identity-&gt;authenticate()) $this-&gt;addError('password', '错误的用户名或密码。'); } ``` `rules()`方法返回的数组定义...

    Yii 读写分离 分表分库

    return Yii::$app-&gt;dbRead; } } ``` 3. 修改查询方法:在查询时使用`dbConnection()`返回的连接对象执行SQL语句。 二、分库分表 分库分表是指将一个大表分成多个小表,存储在不同的数据库中,以提高查询效率。...

    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$ ...

    YII数据库操作大全

    $transaction = Yii::$app-&gt;db-&gt;beginTransaction(); try { // 执行一些数据库操作 // ... if (/* 所有操作成功 */) { $transaction-&gt;commit(); } else { $transaction-&gt;rollBack(); } } catch (\...

    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::...

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

    `Yii::$app-&gt;controller-&gt;id` 和 `Yii::$app-&gt;controller-&gt;action-&gt;id` 在控制器中获取当前控制器和动作ID的方式;以及各种组件、模型、数据库操作、分页、认证和授权等高级功能。了解并熟练掌握这些知识,将有助于...

    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, $...

    联通wap沃支付php

    $this-&gt;alipay_config = \Yii::$app-&gt;params['paysdk']['wopaymobile']; } ``` 这里的 `\Yii::$app-&gt;params['paysdk']['wopaymobile']` 是从 Yii 框架的配置文件中获取的沃支付配置信息。这通常包括了沃支付接口所...

    php 框架yii 数据库 DAO

    ### Yii 框架中的数据库 DAO #### 一、简介 在PHP开发中,Yii作为一个高效且功能丰富的框架,提供了强大的数据库支持。其中,数据访问对象(DAO)是其核心特性之一,它基于PHP的数据对象(PDO)扩展,提供了一个...

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

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

    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

Global site tag (gtag.js) - Google Analytics