摘要:函數返回當前請求的基地址,它有一個參數,默認為,代表返回地址不包含主機信息。上面是獲取當前的,我們還可以使用對請求進行修改和刪除等操作。例子更新例子中的參數為是的,很貼心的將將結果返回為。
Url
以前開發項目的時候,我們習慣于把網站網址做一個配置參數保存,善于用yii2的Url各種方法,無形中讓你的代碼更簡單、更靈活、更規范。
下面就一一說明一下。
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/indexUrl::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()和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
哥倆好~ Url::previous($name = null)和Url::remember($url = "", $name = null)當然,to和toRoute也有第二個參數,決定返回的url是否含有主機信息。
你是否有過這樣的需求,比如記錄一個會員最近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來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時候,基本上最終的東西是代碼,但是編程的知識太廣,總...
摘要:正是前人的努力,我們現在的編程才會如此的容易。讀懂他人代碼算法如果別人是大牛,數學學得很好,很多數學公式,很多遞歸,如果自己沒有一定的數學基礎,可能就暈了,這個時候,數學的基本功可能就會在這里發揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時候,基本上最終的東西是代碼,但是編程的知識太廣,總...
摘要:正是前人的努力,我們現在的編程才會如此的容易。讀懂他人代碼算法如果別人是大牛,數學學得很好,很多數學公式,很多遞歸,如果自己沒有一定的數學基礎,可能就暈了,這個時候,數學的基本功可能就會在這里發揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時候,基本上最終的東西是代碼,但是編程的知識太廣,總...
摘要:正是前人的努力,我們現在的編程才會如此的容易。讀懂他人代碼算法如果別人是大牛,數學學得很好,很多數學公式,很多遞歸,如果自己沒有一定的數學基礎,可能就暈了,這個時候,數學的基本功可能就會在這里發揮作用了。 作者:caoglish原文鏈接:http://t.cn/RKcyGX3來源:知乎 查詢和閱讀文檔能力 原因:你使用編程來解決問題的時候,基本上最終的東西是代碼,但是編程的知識太廣,總...
摘要:出于實戰基礎加之自語言的書籍出版以來,幾乎所有的編程書籍都講述了一個的例子作為開始。操作,其實就是一個是動作的意思,也可以描述為我們前面說的響應地址。 作者:白狼 出處:http://www.manks.top/document/yii_first_application.html 本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究...
閱讀 3136·2021-11-11 16:54
閱讀 2291·2021-09-04 16:48
閱讀 3219·2019-08-29 16:08
閱讀 642·2019-08-29 15:13
閱讀 1344·2019-08-29 15:09
閱讀 2660·2019-08-29 12:45
閱讀 1926·2019-08-29 12:12
閱讀 444·2019-08-26 18:27