【发布时间】:2013-11-21 15:35:57
【问题描述】:
我在 controller1 中调用 controller2 来执行一些操作。问题是,controller2 的操作需要调用它的 beforeFilter 和一个加载到 AppController 中的组件。
其实controller2的action直接调用的时候执行的很好,但是在controller1调用的时候报错如下:
App::import('Controller', 'Second');
$Second = new SecondController;
$Second->someAction();
在组件和 beforeFilter 中定义的变量显示为未设置。 如何通过调用 beforeFilter 并使用我的自定义组件来加载外部控制器?
【问题讨论】:
-
您永远不必从另一个控制器调用一个控制器。如果你这样做,你做错了什么。重构您的代码以满足 MVC,尤其是 CakePHP 处理基本调度过程的方式。
-
如果为了代码清晰起见,我想将一个控制器分成 2 个,按类型分组操作怎么办?
-
我也经常这样做,但这仍然不能证明跨控制器调用是合理的。一切都需要在组件或模型中 - 永远不要进行跨控制器调用。
标签: cakephp controller components