簡體   English   中英

Yii-動態加載控制器

[英]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要求一個特定的控制器,但這意味着為客戶端開發相當嚴格的解決方案,並且要求他們在每次要添加新控制器時都要求開發人員致電。

希望我已經解釋了我要做好的事情。

  • 創建一個頁面對象(id,標題,文檔,描述,圖像)
  • 創建文章對象(id,pageId,title,slug,content)

配置您的urlManager:

'<pageSlug>/<articleSlug>' => 'article/view'

在您的ArticleController-> ViewAction中評估

  • Yii :: app()-> request-> getParam('pageSlug')
  • Yii :: app()-> request-> getParam('articleSlug')

找到適合該頁面的文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM