有沒有人嘗試過?是否有可能,如果是的話,如果我試圖完成它會遇到什麼樣的問題?CakePHP中的控制器繼承?
回答
當然,你可以很容易地在Cake ..中分類控制器,然後你通常會利用它們的鉤子函數,比如'beforeFilter','afterFilter'等等來將運行時邏輯添加到你的控制器中。蛋糕控制器和您在路由中配置的最終控制器之間至少有一個抽象控制器。
爲什麼不試試?至少,它已經完成了Controller - > AppController - > MyController類。
我已經在AppController和應用程序中的某些特殊控制器之間添加了一個附加層。
您遇到的唯一問題是合併$ helpers和$ components類的屬性。在CakePHP中,覆蓋控制器中的這些變量將會覆蓋由AppController設置的那些變量,但它將合併它們,而不是而不是。
這是通過Controller基類中的一個名爲__mergeVars()的特殊方法完成的,它不幸僅用於默認控制器結構。如果您希望$ helpers和$ controllers從AppController繼承到您的控制器,您的附加圖層將不會正確合併。
如果你的目標是在控制器之間共享的邏輯:
的邏輯添加到AppController中與應用中的所有控制器分享。
創建一個組件,並將其添加到$ this-> components中以獲取要共享它的控制器。
添加控制器之間的附加繼承應該只是作爲最後一招,因爲您必須特別注意如何處理組件和幫助程序。例如。您必須手動合併$ this-> components & $ this-> helpers與AppController和您繼承的控制器。
您將遇到問題$components
和$helpers
屬性不合並,而是覆蓋。請務必定義protected $_mergeParent = 'YourParentClass'
以正確完成此操作。這個的默認值是'AppController'
。
的源代碼: http://api.cakephp.org/2.4/source-class-Controller.html#294-301
我應該在哪裏添加這個受保護的$ _mergeParent ='YourParentClass'? – Bangalore 2014-06-03 06:01:25
- 1. 繼承控制器
- 2. Rails的控制器繼承
- 3. 模型+控制器繼承
- 4. 控制器繼承grails 2.2
- 5. 視圖控制器繼承
- 6. Asp.net MVC繼承控制器
- 7. AngularJS - 控制器繼承
- 8. Ruby中的多重繼承...繼承自多個控制器類。
- 9. 控制器中的奇怪繼承
- 10. AngularJS中的控制器/指令繼承
- 11. CakePHP的繼承
- 12. 將cakephp中的插件中的類繼承到應用控制器
- 13. 繼承父控制器中斷父控制器
- 14. AngularJS:組件的控制器繼承
- 15. ASP.Net MVC 3控制器的繼承
- 16. 繼承的Web API API控制器
- 17. 控制器不繼承的before_filter
- 18. 控制器繼承如何實現的抽象控制器
- 19. .NET MVC 2控制器繼承
- 20. 繼承紅寶石控制器
- 21. 單控制器,多(繼承)類(軌3)
- 22. WebApi2屬性繼承路由控制器
- 23. 玩框架控制器繼承
- 24. 如何繼承MPMoviePlayer控制器
- 25. 軌,控制器繼承W¯¯路線
- 26. Geddy模型/控制器繼承
- 27. StoryBoard處理繼承視圖控制器
- 28. 角JS控制器繼承問題
- 29. 測試Rails控制器繼承Typus
- 30. Ninjaframework MVC控制器繼承和路由
請更具體與您的問題,並解釋你正在試圖解決這個問題。 – 2008-12-11 18:12:48