成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Yii2之Url類全面解密 有你不知道的~

SnaiLiu / 3001人閱讀

摘要:函數(shù)返回當(dāng)前請求的基地址,它有一個參數(shù),默認(rèn)為,代表返回地址不包含主機(jī)信息。上面是獲取當(dāng)前的,我們還可以使用對請求進(jìn)行修改和刪除等操作。例子更新例子中的參數(shù)為是的,很貼心的將將結(jié)果返回為。

Url

以前開發(fā)項(xiàng)目的時候,我們習(xí)慣于把網(wǎng)站網(wǎng)址做一個配置參數(shù)保存,善于用yii2的Url各種方法,無形中讓你的代碼更簡單、更靈活、更規(guī)范。
下面就一一說明一下。

Url::base($scheme = false)

base函數(shù)返回當(dāng)前請求的基地址,它有一個參數(shù)$scheme,默認(rèn)為false,代表返回地址不包含主機(jī)信息。
$scheme參數(shù)說明

false 返回地址不包含主機(jī)信息

true 包含主機(jī)地址

http 返回http協(xié)議的主機(jī)地址

https 返回https協(xié)議的主機(jī)地址

"" 返回相對的主機(jī)地址

我們以http://yii2-study.local.com/i... 來舉例

    Url::base();
    //  返回為""
    Url::base(true)
    //  返回為http://yii2-study.local.com
    //  記?。鹤詈鬀]有反斜杠哦
    Url::base("http");
    //  返回為http://yii2-study.local.com
    Url::base("https");
    //  返回為https://yii2-study.local.com
    Url::base("");
    //  返回為//yii2-study.local.com

切記:http https ""這些參數(shù),函數(shù)base并沒有去判斷,只是簡單的字符串替換,如果你輸入了base("d"),則返回

d://yii2-study.local.com

Url::canonical()

返回當(dāng)前請求的標(biāo)準(zhǔn)url
我們還是以http://yii2-study.local.com/i... 來舉例

    echo Url::canonical();
    //  返回結(jié)果為 http://yii2-study.local.com/index.php?r=site/index
Url::current(array $params = [], $scheme = false)

返回當(dāng)前請求+GET參數(shù),重點(diǎn)是該函數(shù)配合參數(shù)還能增加刪除GET參數(shù),這在我們某些url匹配時候會變得非常有用。
我們以http://yii2-study.local.com/i... 來舉例

    echo Url::current();

執(zhí)行上述代碼后我們會得到 /index.php?r=site/index&id=78&cat=me 這樣的結(jié)果

請注意,current()和canonical()區(qū)別,如果對本例里的url執(zhí)行canonical()函數(shù),會得到http://yii2-study.local.com/i... ,相比較current,它多了主機(jī)信息,少了GET參數(shù)(路由請求除外)。

上面是current獲取當(dāng)前的Url,我們還可以使用current對請求進(jìn)行修改和刪除等操作。

例子1:我們對當(dāng)前請求增加一個name=abei GET參數(shù),只需要執(zhí)行

    echo Url::current(["name"=>"abei"]);

于是我們獲得了預(yù)想的結(jié)果/index.php?r=site/index&id=78&cat=me&name=abei

例子2:我們要刪除例子url中的cat參數(shù),只需要執(zhí)行

    echo Url::current(["cat"=>null]);

則結(jié)果為/index.php?r=site/index&id=78 哈哈,cat參數(shù)被刪除了

千萬記?。簞h除一個GET參數(shù)的時候,只能設(shè)置current對應(yīng)參數(shù)值為null,設(shè)置成false或""都是沒用的。

例子3:更新例子中url的cat參數(shù)為you

    echo Url::current(["cat"=>"you"]);

是的,yii2很貼心的將將結(jié)果返回為 /index.php?r=site/index&id=78&cat=you。感謝薛強(qiáng),雖然現(xiàn)在在yii2的github已經(jīng)看不到你的comment,仍然要感謝你創(chuàng)造了yii2.

一個大問題,current返回的結(jié)果中如何包含主機(jī)信息那?
你只需,只需將current的第二個參數(shù)設(shè)置為true就ok了。

Url::to($url = "", $scheme = false) 和 Url::toRoute($route, $scheme = false)

生成一個URL,to()和toRoute()只有一個不同,那就是當(dāng)to()的第一個函數(shù)為一個字符串的時候,會直接返回,而toRoute會將其解析成controller/action或action,然后返回url。
下面我們來舉幾個例子來說明下

    Url::to(["site/about","cat"=>"abei"]);
    Url::toRoute(["site/about","cat"=>"abei"]);
    //  以上兩個函數(shù)輸出了同一個結(jié)果 index.php?r=site/about&cat=abei
    Url::to("site/index");
    Url::toRoute("site/index");
    //  以上兩個函數(shù)輸出結(jié)果不同 to()的結(jié)果為site/index toRoute()的結(jié)果為index.php?r=site/index
    Url::to();
    Url::toRoute();
    //  to()無參數(shù)時返回了當(dāng)前的路由+GET,而toRoute報錯了(toRoute第一個參數(shù)不允許不存在)
    Url::to("@web/images/logo.gif");
    Url::toRoute("@web/images/logo.gif");
    //  to和toRoute均支持別名。
    Url::to(["site/index","#"=>"name");
    Url::toRoute(["site/index","#"=>"name")
    //  這里有一個特殊的#,使用他能實(shí)現(xiàn)內(nèi)部錨點(diǎn),to和toRoute均可以生成index.php?r=site/index#name

當(dāng)然,to和toRoute也有第二個參數(shù),決定返回的url是否含有主機(jī)信息。

哥倆好~ Url::previous($name = null)和Url::remember($url = "", $name = null)

你是否有過這樣的需求,比如記錄一個會員最近30個訪問的路徑,使用previous和remember就能輕易實(shí)現(xiàn),就和他們的名字一樣,用remember可以存儲當(dāng)前路徑,使用previous可以把remember存起來的url展示出來。
來來來,貼代碼,其他都沒有用。

    Url::remember("http://www.a.com","a");
    Url::remember("http://www.b.com","b");
    var_dump(Url::previous("a"));
    //  結(jié)果輸出了http://www.a.com

yii2記住了,小提示,是session原理。

我想細(xì)心的你一定發(fā)現(xiàn)了,是的,previous和remember的參數(shù)是可以為空的,沒錯,阿北用代碼來說明。
我們還是以 http://yii2-study.local.com/i...為例

    echo Url::previous();
    //  當(dāng)previous參數(shù)為空時,返回returnUrl。
    echo Url::remember();
    //  對于remember函數(shù),當(dāng)?shù)谝粋€參數(shù)$url不提供,將記住當(dāng)前路由請求(即http://yii2-study.local.com/index.php?r=site/index),第二個參數(shù)$name不提供,則默認(rèn)為yiiwebUser::$returnUrlParam
其他!

當(dāng)然Url還有一些其他函數(shù),比如home()等,比較簡單,就不一一說明,主要上面幾個大方法掌握了,Url基本就過了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22345.html

相關(guān)文章

  • 什么是編程基本功?

    摘要:正是前人的努力,我們現(xiàn)在的編程才會如此的容易。讀懂他人代碼算法如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個時候,數(shù)學(xué)的基本功可能就會在這里發(fā)揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時候,基本上最終的東西是代碼,但是編程的知識太廣,總...

    Acceml 評論0 收藏0
  • 什么是編程基本功?

    摘要:正是前人的努力,我們現(xiàn)在的編程才會如此的容易。讀懂他人代碼算法如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個時候,數(shù)學(xué)的基本功可能就會在這里發(fā)揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時候,基本上最終的東西是代碼,但是編程的知識太廣,總...

    lansheng228 評論0 收藏0
  • 什么是編程基本功?

    摘要:正是前人的努力,我們現(xiàn)在的編程才會如此的容易。讀懂他人代碼算法如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個時候,數(shù)學(xué)的基本功可能就會在這里發(fā)揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時候,基本上最終的東西是代碼,但是編程的知識太廣,總...

    bbbbbb 評論0 收藏0
  • 什么是編程基本功?

    摘要:正是前人的努力,我們現(xiàn)在的編程才會如此的容易。讀懂他人代碼算法如果別人是大牛,數(shù)學(xué)學(xué)得很好,很多數(shù)學(xué)公式,很多遞歸,如果自己沒有一定的數(shù)學(xué)基礎(chǔ),可能就暈了,這個時候,數(shù)學(xué)的基本功可能就會在這里發(fā)揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時候,基本上最終的東西是代碼,但是編程的知識太廣,總...

    william 評論0 收藏0
  • yii2實(shí)戰(zhàn)教程第一個Yii程序

    摘要:出于實(shí)戰(zhàn)基礎(chǔ)加之自語言的書籍出版以來,幾乎所有的編程書籍都講述了一個的例子作為開始。操作,其實(shí)就是一個是動作的意思,也可以描述為我們前面說的響應(yīng)地址。 作者:白狼 出處:http://www.manks.top/document/yii_first_application.html 本文版權(quán)歸作者,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究...

    Near_Li 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<