Vic*_*cer 27 arrays parameters cakephp cakephp-1.3
在控制器中,调用另一个控制器的操作并将数组作为参数传递的最合适方法是什么?
我知道您可以使用requestAction来调用其他控制器中的操作.但是可以使用请求操作将数组作为参数传递吗?
不,我不想把动作放在App Controller中.所以这对我来说不是解决方案.
我知道的另一种方法是加载另一个控制器,如下所述:http: //book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Configuration.html#importing-controllers-models-组件-行为-视图-和佣工
但是,在将数组作为参数传递时,是否有更简单的方法来调用其他控制器操作?
我是cakePHP的新手,所以任何建议都表示赞赏.谢谢.
小智 29
我不建议使用requestAction方法,而是导入,并实例化所需的控制器.
CakePHP doc讲述了requestAction:
"在控制器或模型中使用很少"
http://book.cakephp.org/view/434/requestAction
导入并加载控制器后,可以使用其参数调用此控制器的任何方法.
<?php
  //Import controller
  App::import('Controller', 'Posts');
  class CommentsController extends AppController {
    //Instantiation
    $Posts = new PostsController;
    //Load model, components...
    $Posts->constructClasses();
    function index($passArray = array(1,2,3)) {
      //Call a method from PostsController with parameter
      $Posts->doSomething($passArray);
    }
  }
?>
nei*_*kes 25
您是否适合将逻辑从第二个控制器移动到其模型中,然后在第一个控制器的操作中执行类似的操作?
$var = ClassRegistry::init('SecondModel')->myMethod($array);
$this->set(compact('var'));
然后,在第一个控制器操作的视图中,您可以使用该数据.
我总是试图将控制器方法保持在可以通过浏览器触发的操作中,在模型中放置尽可能多的逻辑,从控制器操作中调用外部模型方法,这些操作需要来自不是该控制器模型的模型的数据,然后使用该数据在我的视图中,如果是经常查看的数据,我会为它创建一个元素.