2008-12-11 92 views
3

有沒有人嘗試過?是否有可能,如果是的話,如果我試圖完成它會遇到什麼樣的問題?CakePHP中的控制器繼承?

+0

請更具體與您的問題,並解釋你正在試圖解決這個問題。 – 2008-12-11 18:12:48

回答

0

當然,你可以很容易地在Cake ..中分類控制器,然後你通常會利用它們的鉤子函數,比如'beforeFilter','afterFilter'等等來將運行時邏輯添加到你的控制器中。蛋糕控制器和您在路由中配置的最終控制器之間至少有一個抽象控制器。

1

爲什麼不試試?至少,它已經完成了Controller - > AppController - > MyController類。

3

我已經在AppController和應用程序中的某些特殊控制器之間添加了一個附加層。

您遇到的唯一問題是合併$ helpers和$ components類的屬性。在CakePHP中,覆蓋控制器中的這些變量將會覆蓋由AppController設置的那些變量,但它將合併它們,而不是而不是

這是通過Controller基類中的一個名爲__mergeVars()的特殊方法完成的,它不幸僅用於默認控制器結構。如果您希望$ helpers和$ controllers從AppController繼承到您的控制器,您的附加圖層將不會正確合併。

4

如果你的目標是在控制器之間共享的邏輯:

  • 的邏輯添加到AppController中與應用中的所有控制器分享。

  • 創建一個組件,並將其添加到$ this-> components中以獲取要共享它的控制器。

添加控制器之間的附加繼承應該只是作爲最後一招,因爲您必須特別注意如何處理組件和幫助程序。例如。您必須手動合併$ this-> components & $ this-> helpers與AppController和您繼承的控制器。

2

您將遇到問題$components$helpers屬性不合並,而是覆蓋。請務必定義protected $_mergeParent = 'YourParentClass'以正確完成此操作。這個的默認值是'AppController'

的源代碼: http://api.cakephp.org/2.4/source-class-Controller.html#294-301

+0

我應該在哪裏添加這個受保護的$ _mergeParent ='YourParentClass'? – Bangalore 2014-06-03 06:01:25