2012-07-16 36 views
1

我有一系列的urlManager規則,可以簡化我的web應用程序。例如,Yii附帶的vanilla應用程序安裝程序會創建「頁面」模型,並將頁面從/site/page/view/about重定向到/aboutCan Yii能否通過createUrl函數正確使用urlManager規則?

這很好,但我不確定Yii是否能夠閱讀我的規則來確定創建的最佳URL。目前,createUrl將返回標準URL(/網站/網頁/視圖/左右)如果我使用下面的代碼: createUrl('/site/page', array('view'=>'about'))

另外,使用createUrl('/about')將正確鏈接到首選網址,但這並不像第一個例子那樣好。此外,在CMenu函數中使用此功能將不會將此鏈接關聯爲當前的活動的鏈接。

對此要求有更好的實踐嗎? createUrl的替代用法看起來過於「硬編碼」,並且如上所述,不能與邏輯上工作(確定活動頁面等)。

+1

你可以請張貼url規則嗎?並注意'createUrl'的正確語法是'createUrl('site/page',array('view'=>'about'))' – dInGd0nG 2012-07-16 07:51:32

+0

@ dlnGd0nG有問題的規則是'''=>'site/page/view/''。對不起,這是我的** createUrl **函數的拼寫錯誤,在我的腳本中它的用法是正確的,正如你所說的 – Rhys 2012-07-16 11:33:15

回答

1

您的規則'<page:\w+>' => 'site/page/view/<page>'不正確。使用這個(假設你使用默認的gii生成的代碼)作爲第一條規則

'<view:\w+>'=>'site/page' 
+0

謝謝,這個修正了它,現在creatUrl等等,返回所需的url。你有參考我可以讀取它的工作原理嗎?我所看到的例子總是使用'​​字符串變量'(例如,標記必須用於規則賦值,它還知道頁面嗎?或者這是假定該變量的名稱?) 。 – Rhys 2012-07-16 20:51:05

+0

除此之外,這條規則如何適用於二級頁面(例如,*/staff/john-smith *,可在* site/pages/staff/john-smith *中找到)?我似乎無法制定規則包括正斜線(即使將其更改爲「'或」「 – Rhys 2012-07-16 22:36:03

+0

請參閱http://www.yiiframework.com/doc/guide/1.1/en/topics.url。)和密鑰(上面的'視圖')是GET參數,值(「site/page'')是路徑(意味着控制器/動作) – dInGd0nG 2012-07-17 07:27:43

1

用這種方式來創建網址:/網站/網頁/視圖/左右

Yii::app()->createUrl('site/page', array('view'=>'about')); 

它是在這裏更好的方式提到:Yii Url Mmanagement

+0

這是原始的完整形式的URL('/ site/page/view/about'),不幸的是規則版本 – Rhys 2012-07-16 11:35:33