我對Yii框架有了很好的發揮,現在我想深入一點,我想要做的是設置一個應用程序,其中幾個不同的URL指向相同控制器。Yii - 動態加載控制器
通常domain.com/content會指向MVC中標準的ContentController類。
我想要做的是設置三個控制器(也許更多,但這將啓動),即ArticlesController,DisplayController和SplashController。
然後,我會設置一個客戶端本質上的CMS,他們將能夠創建儘可能多的頁面,並將它們指向上述三個控制器,我已經設置它們來處理數據。因此,例如我的客戶可以設置以下頁面:新聞,通知,技術,並讓他們都指向ArticlesController,並設置頁面:管理,特價,支持,並讓他們都指向DisplayController。
我知道所有這些控制器都可以使用Gii模塊創建,但在這種情況下它不是一個選項,因爲我不認爲這適用於非技術人員。
我只想讓我的客戶端能夠登錄到CMS,決定他想創建一個名爲「randompage」的新頁面,使用下拉菜單將其指向ArticlesController,然後爲它寫一堆文章現在有這些條款在domain.com/randompage/article-1 domain.com/randompage/article-2
設立的情況下訪問標準將指向網站/錯誤,因爲沒有控制RandompageController
我到目前爲止所做的是在Controller類中創建一個構造函數,我可以覆蓋控制器ID
class Controller extends CController {
function __construct($id) {
// Code here which successfully pulls from the database
// which controller the current page should point to.
parent::__construct($newControllerID)
}
}
如果我在CController類檢查,$此 - > _ ID =無論是文章,展示或飛濺,但應用程序本身劇照負載網站/錯誤
我猜我必須設置/覆蓋控制器別處。我曾嘗試
Yii::app()->setController($newControllerID)
但沒有
也許Yii中設置任何影響,必須要求每個URL特定的控制器,但是這將意味着爲客戶開發,而剛性的解決方案,並要求他們每次他們想添加一個新的控制器時,都要給開發者打電話。
希望我已經解釋了我想要做的很好。
tl; dr。不,不,在Yii中,訪問來自不同URL的同一個控制器很簡單,只需設置你的urlmanager即可。 – 2013-07-05 17:39:14
@PeterM他正在試圖做與你所說的相反的事情。他正試圖使用一個URL訪問3個不同的控制器。 – Pitchinnate
程序如何知道'/ articles/update/1'是新聞,通知還是技術對象?所有這些都是相同的模型還是你有三個不同的模型?如果他們都是相同的模型,爲什麼你會想要三個不同的控制器? – Pitchinnate