国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

SnaiLiu / 2993人閱讀

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

Url

以前開發項目的時候,我們習慣于把網站網址做一個配置參數保存,善于用yii2的Url各種方法,無形中讓你的代碼更簡單、更靈活、更規范。
下面就一一說明一下。

Url::base($scheme = false)

base函數返回當前請求的基地址,它有一個參數$scheme,默認為false,代表返回地址不包含主機信息。
$scheme參數說明

false 返回地址不包含主機信息

true 包含主機地址

http 返回http協議的主機地址

https 返回https協議的主機地址

"" 返回相對的主機地址

我們以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 ""這些參數,函數base并沒有去判斷,只是簡單的字符串替換,如果你輸入了base("d"),則返回

d://yii2-study.local.com

Url::canonical()

返回當前請求的標準url
我們還是以http://yii2-study.local.com/i... 來舉例

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

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

    echo Url::current();

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

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

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

例子1:我們對當前請求增加一個name=abei GET參數,只需要執行

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

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

例子2:我們要刪除例子url中的cat參數,只需要執行

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

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

千萬記住:刪除一個GET參數的時候,只能設置current對應參數值為null,設置成false或""都是沒用的。

例子3:更新例子中url的cat參數為you

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

是的,yii2很貼心的將將結果返回為 /index.php?r=site/index&id=78&cat=you。感謝薛強,雖然現在在yii2的github已經看不到你的comment,仍然要感謝你創造了yii2.

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

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

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

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

當然,to和toRoute也有第二個參數,決定返回的url是否含有主機信息。

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

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

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

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

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

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22345.html

相關文章

  • 什么是編程基本功?

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

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

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

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

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

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

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

    william 評論0 收藏0
  • yii2實戰教程第一個Yii程序

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

    Near_Li 評論0 收藏0

發表評論

0條評論

SnaiLiu

|高級講師

TA的文章

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