[arrays] CakePHP: лучший способ вызвать действие другого контроллера с массивом в качестве параметра?



Answers

Я бы не советовал использовать метод 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);
    }
  }
?>
Question

В контроллере, что является наиболее подходящим способом вызова действия другого контроллера, а также передать массив в качестве параметра?

Я знаю, что вы можете использовать requestAction для вызова действий внутри других контроллеров. Но возможно ли передавать массивы в качестве параметров с помощью действия запроса?

И нет, я не хочу включать это действие в App Controller. Так что это не решение для меня.

Единственный другой способ, который я знаю, - загрузить другой контроллер, как описано в: http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Configuration.html#importing-controllers-models-components-behaviors-views-and-helpers

Но есть ли более простой способ просто вызвать действие других контроллеров при передаче массива в качестве параметра?

Я новичок в cakePHP, поэтому любое предложение оценивается. Благодарю.




CakePHP 2.X:

<?php
App::uses('AppController', 'Controller');
App::uses('PostsController', 'Controller');

class CommentsController extends AppController {

    public function index($parameter = null){
        //Instantiate
        $Posts = new PostsController();
        //Load model, components...
        $Posts->constructClasses();

        //Call a method of Posts passing a parameter
        $Posts->aMethod($parameter);
    }
}



Related