2011-03-06 500 views
0

我正在構建基於小部件的網站。我有一個通用的WidgetInstancesController類,有幾個方法,一個模型和一些視圖。現在,我想知道是否可以擴展這個類。換句話說,每個小部件應該是另一個類,擴展了WidgetInstancesController類。我想將這些小部件類存儲在app/widgets/之下。此外,這些小部件不會有任何特定的模型(因爲它們將使用父WidgetInstance模型),但可能有一些特定的視圖。CakePHP擴展控制器(僅)

任何建議,我該如何做到這一點將不勝感激!

+0

你可以擴展沒有問題,但據我所知,控制器需要在/ app/controllers中。您可能想考慮將您的小部件作爲幫助程序或組件 – JohnP

+0

Helpers肯定不會,因爲我需要覆蓋控制器數據。組件......我不知道,每次請求加載數十個組件的時間太長(這取決於用戶活動的小部件數量)。或者可以在'app/controllers/widgets /'中創建一個帶有小部件的文件夾,並簡單地擴展父類(WidgetInstancesControllers)?而且,我將如何加載或調用小部件控制器的動作?它能夠從它正在擴展的類訪問模型數據嗎? – linkyndy

+0

那麼這些組件可以裝載在'根據需要'的情況下,以保持全亮。您將能夠訪問模型,因爲您獲得了一個正在呼叫您的控制器的實例。 – JohnP

回答

1

我會建議將它們構建爲組件,但可以通過其他方式完成。

我不得不做類似的地方,我用附加模塊構建了一個CMS。爲了讓它在邏輯上工作,我不得不把MVC的頭部稍微調整一下,然後去找一個很薄的控制器。實質上,前端模塊邏輯完全包含在模型級別,並將相關視圖作爲元素。模塊助手在公共前端獲取並顯示模塊。後端通常通過MVC與正常的肥胖控制器進行處理。

事實證明,這些模型令人驚訝的輕量級,並且擁有一切元素使可用性成爲夢想。

+0

我對MVC比較陌生,所以你可以解釋一下,如果一個組件是一個組件,它將如何行動?從我迄今爲止瞭解的情況來看,一個組件爲當前控制器增加了額外的方法,對吧?例如,如果我需要在組件中擴展父控制器的方法abc(),那麼我該怎麼做?此外,我將只能使用**組件方法而不使用控制器嗎?如果我想爲每個小部件個性化一個視圖,我該怎麼做,我應該把它放在哪裏?或者,而不是一個觀點,你建議做一個幫手?我有點困惑,將不勝感激任何進一步的幫助:) – linkyndy

+0

我現在讀了關於插件。他們會爲我的案件工作嗎?還是他們太多隻是爲了覆蓋幾個控制器方法?謝謝你的幫助! – linkyndy

+1

組件的介紹頁面說明了這一切,確實如此:http://book.cakephp.org/view/994/Introduction你並不是真的向控制器添加方法,而是讓另一個類可用於控制器中。這是在相同或不同應用程序的其他地方重新使用自包含邏輯塊的一種便捷方式。我個人從不使用插件,因爲我發現它們很麻煩,很少像我期望的那樣工作,並且可能會干擾應用程序的其他方面。 – Leo