Cakephp 从另一个控制器调用时,未在控制器中加载组件和beforeFilter

Cakephp 从另一个控制器调用时,未在控制器中加载组件和beforeFilter,cakephp,controller,components,Cakephp,Controller,Components,我正在呼叫controller1中的controller2来执行一些操作。问题是,controller2的操作需要调用其beforeFilter和加载到AppController中的组件 实际上,直接调用controller2时,controller2的操作执行得很好,但在controller1中调用时会出现如下错误: App::import('Controller', 'Second'); $Second = new SecondController; $Second->someActi

我正在呼叫controller1中的controller2来执行一些操作。问题是,controller2的操作需要调用其beforeFilter和加载到AppController中的组件

实际上,直接调用controller2时,controller2的操作执行得很好,但在controller1中调用时会出现如下错误:

App::import('Controller', 'Second');
$Second = new SecondController;
$Second->someAction();
组件和beforeFilter中定义的变量显示为未设置。
如何通过调用beforeFilter并使用自定义组件加载外部控制器?

在这种情况下,几乎没有选项

1. Use request Actions http://book.cakephp.org/2.0/en/controllers.html#Controller::requestAction

2. Move the logic or code you want to execute from SecondCrontroller to common component and use it in both contrllers. 

3. Move the logic or code you want to execute from SecondCrontroller to AppController

您不必从另一个控制器调用控制器。如果你那样做,你就做错了。重构代码以满足MVC的要求,特别是CakePHP处理基本调度过程的方式。如果为了代码清晰起见,我想将控制器一分为二,按类型对操作进行分组,该怎么办?这也是我经常做的,但这仍然不能证明跨控制器调用是正确的。所有东西都需要在组件或模型中-永远不要进行跨控制器调用。此外,模型可能是完成列表的好地方(4.)。