2008-12-11 107 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