首頁 > 後端開發 > php教程 > yii yii框架中的Url生產問題小結

yii yii框架中的Url生產問題小結

WBOY
發布: 2016-07-29 08:47:42
原創
888 人瀏覽過

複製程式碼 程式碼如下:





假定設定了UrlManager的配置為Path模式,用yii預設的配置:

複製程式碼 程式碼如下:


複製程式碼

程式碼如下: array(
'urlFormat'=>'path',
'rules'=>array(
'/'=>'/view',
'//'=>'/',
'/'=>'/ ',
),

),


上面兩行程式碼會生產什麼樣的連結位址?
http:///user/register //錯誤連結
http:///index.php/user/register //正確連結
第一個連結是錯誤的,瀏覽器會回傳404錯誤。第二個連結會存取UserController的Register方法。差別就在於第二個連結在產生的時候我們傳入的參數是一個array數組,而第一個方法是一個簡單字串。 Yii在處理Url的時候,遇到簡單字串會直接使用該字串作為最終的Url,而當遇到數組的時候會呼叫Controller的CreateUrl來產生Url.
說到簡單字串,這兩個鏈接中其實有一個非常本質的差別。雖然同樣都是字串'user/register',但在第一個字串中就代表一個13個字元的相對路徑,而第二個連結中則代表UserController的registerAction,是有著特俗意義的。

附上Yii處理Url的方法NormalizeUrl的原始程式碼:複製程式碼

程式碼如下:


/**
* 將輸入參數標準化為有效的 URL。
*
* 如果輸入參數為空字串,則傳回目前請求的URL。
*
* 如果輸入參數是非空字串,則被視為有效的 URL,並且將
* 不做任何更改地返回。
*
* 如果輸入參數是數組,則將其視為控制器路由和
* GET 參數列表,並且將調用 {@link CController::createUrl} 方法來
* 建立 URL。在這種情況下,第一個陣列元素指的是控制器路由,
*,其餘鍵值對指的是 URL 的附加 GET 參數。
* 例如,array('post/list', 'page'=>3)可用來產生URL
* /index.php?r=post/list&page=3
*
* @param mix $url 用於產生有效 URL 的參數
* @return string 規範化 URL
*/
_public stat func

/**&*/
_ific function normalize ($url))
{
if(isset($url[0]))
{
if(($c=Yii::app()->getController())!==null)
$url=$ c->createUrl($url[0],array_splice($url,1));
else
$url=Yii::app()->createUrl($url[0],array_splice($url,1)) ;
}
else
$url='';
}

return $url==='' ? Yii::app()->getRequest()->getUrl() : $url;

}

以上就介紹了yii yii框架中的Url生產問題小結,包括了yii方面的內容,希望對PHP教程有興趣的朋友有所幫助。 🎜 🎜 🎜
相關標籤:
yii
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板