3

有没有人尝试过这个?有没有可能,如果有的话,如果我尝试完成它会遇到什么样的问题?

4

5 回答 5

4

如果您的目标是在控制器之间共享逻辑:

  • 将逻辑添加到 AppController 以与应用程序中的所有控制器共享。

  • 制作一个组件并将其添加到 $this->components 以供您要共享的控制器使用。

在控制器之间添加额外的继承只能作为最后的手段,因为您必须特别注意如何处理组件和助手。例如,您必须手动将 $this->components 和 $this->helpers 与 AppController 和您继承的控制器合并。

于 2009-01-08T13:55:11.813 回答
3

我在 AppController 和应用程序中的一些特殊控制器之间添加了一个附加层。

您将遇到的唯一问题是 $helpers 和 $components 类属性的合并。在 CakePHP 中,覆盖控制器中的这些变量不会覆盖 AppController 设置的变量,但会合并它们。

这是通过 Controller 基类中名为 __mergeVars() 的特殊方法完成的,不幸的是,它只针对默认控制器结构执行此操作。如果您希望 $helpers 和 $controllers 从 AppController 继承到您的控制器,您的附加层将不会正确合并。

于 2008-12-17T09:55:30.280 回答
2

您将遇到属性不合并而是覆盖的$components问题。$helpers请务必定义protected $_mergeParent = 'YourParentClass'正确完成此操作。默认值为'AppController'.

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

于 2013-09-10T12:31:59.100 回答
1

为什么不试试?至少,它已经通过 Controller -> AppController -> MyController 类完成了。

于 2008-12-11T19:01:34.983 回答
0

当然,您可以轻松地在 Cake 中对控制器进行子类化。然后您通常会利用它们的钩子函数(例如“beforeFilter”、“afterFilter”等)将运行时逻辑添加到您的控制器中。我通常会放置至少 1 个抽象控制器在 cakes 控制器和您在路由中配置的最终控制器之间。

于 2008-12-11T20:23:07.893 回答