[英]Yii - Dynamically Loading a Controller
我在Yii Framework上玩得很開心,現在我想更深入地了解它,我想做的是設置一個應用程序,其中幾個不同的URL指向同一個控制器。
通常,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類中創建一個構造函數,在該類中可以覆蓋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類中簽入,$ this-> _ id =文章,顯示或啟動,但應用程序本身仍會加載站點/錯誤
我猜我必須在其他地方設置/覆蓋Controller。 我努力了
Yii::app()->setController($newControllerID)
但這沒有任何作用
也許Yii已經設置好了,並且必須為每個URL要求一個特定的控制器,但這意味着為客戶端開發相當嚴格的解決方案,並且要求他們在每次要添加新控制器時都要求開發人員致電。
希望我已經解釋了我要做好的事情。
配置您的urlManager:
'<pageSlug>/<articleSlug>' => 'article/view'
在您的ArticleController-> ViewAction中評估
找到適合該頁面的文章
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.