zoukankan      html  css  js  c++  java
  • Yii中CreateUrl的使用总结

    在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(‘action02/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);

    UrlManage::createUrl($route,$params,$ampersand);

    它与Yii::app()->createUrl()唯一的不同点是后者将$route进行了整理:trim($route,’/’)

  • 相关阅读:
    C语言 sprintf 函数 C语言零基础入门教程
    C语言 printf 函数 C语言零基础入门教程
    C语言 文件读写 fgets 函数 C语言零基础入门教程
    C语言 文件读写 fputs 函数 C语言零基础入门教程
    C语言 fprintf 函数 C语言零基础入门教程
    C语言 文件读写 fgetc 函数 C语言零基础入门教程
    C语言 文件读写 fputc 函数 C语言零基础入门教程
    C语言 strlen 函数 C语言零基础入门教程
    Brad Abrams关于Naming Conventions的演讲中涉及到的生词集解
    适配器模式
  • 原文地址:https://www.cnblogs.com/dest/p/3808420.html
Copyright © 2011-2022 走看看