已解決!
看起來,當你嘗試在模塊的URL中使用不同的名稱時,Yii失去了它的大腦。我試圖通過$ defaultController和$ defaultAction,以及其他約10件事情。我無法弄清楚如何覆蓋我的模塊「ezpaypal」上設置的映射Yii,所以我可以將它的URL更改爲「billing」,但仍指向「/ modules/ezpaypal」。
首先,創建一個模塊。GII我將其命名「ezpaypal」轟,產生的一切
你的模塊名稱添加到config.php文件:。
'modules'=>array(
'ezpaypal'
),
問題是,我不希望看到「ezpaypal」中的URL 。我希望它是可改變的,所以它可以是「/結算」或「/結帳」。所以我需要模塊保持命名爲「ezpaypal」。我嘗試並遵守規則,並遇到大量問題。
看來Yii爲「ezpaypal」創建了根別名,因爲它是我的加載模塊。如果你像正常一樣使用它,它的確可以正常工作。它知道要使用的控制器,一切。
當您使用urlManager規則將「billing」映射到「ezpaypal」以更改URL中的名稱時,Yii不再知道要使用哪個默認控制器。它也不知道要採取什麼默認操作,如/ controller/3,它不知道要執行/ controller/view/3。 Yii剛剛腦死亡。
更好的解決方案是,如果Yii確實有一個「隱藏」或不知名的方式來處理這個問題?我不知道Yii框架在哪裏解析配置並加載模塊。也許我可以找到一個函數或變量來設置,這將解決這個問題,沒有冗長的url管理器規則。它正確處理了「ezpaypal」模塊URL規則,而無需任何雖然添加到urlmanager ...
一個簡單的修正,是寫你的網址經理規則來處理每一個可能的組合。也許有人可以把它清理成更少的線條?
'rules'=>array(
// EZPayPal Friendly URL Support - DO NOT TOUCH!
'<module:(billing)>'=>'ezpaypal',
'<module:(billing)>/index'=>'ezpaypal/default/index',
'<module:(billing)>/<controller:\w+>'=>'ezpaypal/<controller>',
'<module:(billing)>/<controller:\w+>/<id:\d+>'=>'ezpaypal/<controller>/view',
'<module:(billing)>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'ezpaypal/<controller>/<action>',
'<module:(billing)>/<controller:\w+>/<action:\w+>'=>'ezpaypal/<controller>/<action>',
),
工程:)
如果有人做同樣的事情,使用您的模塊不同的URL路徑,只是改變「結算」與你在URL名稱,「ezpaypal 「用模塊目錄的實際名稱。
PS:上述規則可以簡化嗎?我不確定。看來這是完美的組合。如果我刪除一條,那條路線就會中斷。另外,我還在尋找一種更簡單的方式,所以我們可以在沒有urlmanager的情況下覆蓋它。
你需要在config.php的'urlManager'中設置規則 – 2015-02-10 06:54:39