Как получить доступ к переменной из другого controller - CakePHP


Как я могу получить доступ к переменным другого controller?

, например:

Получил controller X, и в action index, создаю переменную (или константу). controller Y, я хочу получить доступ к значению переменной (или константы) controller X.

это можно сделать? Помня, что каждое действие каждого controller и в моем приложении, будет иметь переменную, которая должна быть доступной по другой - controller.

Controller ExemploX

class ExemploXController 
    {
        $dependencias = array("index","listar");

        public function index()
            {
                echo "Index";
            }
        public function funcaoX()
            {
                echo "Funcão X";
            }
        public function listar()
            {
                echo "listando";
            }
    }

Controller ExemploY

class ExemploYController
    {
        $dependencias = array("index","atualizar");

        public function index()
            {
                //pegar o valor da variável $dependencias da controller ExemploXController
                $dependency[] = ExemploXController->dependencias;
            }
        public function funcaoY()
            {
                echo "Funcão Y";
            }
        public function atualizar()
            {
                echo "atualizar";
            }
    }
 6
Author: morphinduction, 2014-02-10

2 answers

Получить Доступ к переменным из других контроллеров, совершенно разные, доступ к методам и действия с ними.

controllers CakePHP только обычных классах, так что, в теории, вы могли бы получить доступ к их атрибуты и методы, так же, как и любой класс, для этого нужно просто загрузить соответствующий файл.

Способ сделать это с помощью App::import. Посмотрите на пример из собственной документации:

// The same as require('Controller/UsersController.php');
App::import('Controller', 'Users');

// We need to load the class
$Users = new UsersController();

, Как сама документация указывает, что это эквивалент непосредственно использовать метод require. Кроме того, вы можете создать файл с константами, что вам нужно, и включить эти файлы в свой код, используя, где это необходимо.

 3
Author: utluiz, 2014-02-11 13:40:21

Здравствуйте, вы можете создать requestAction. С ним вы можете использовать оба в том же контроллер, как и в других контроллерах, но не забудьте создать elemment cache.

Http://book.cakephp.org/2.0/pt/controllers.html#Controller::requestAction

 4
Author: Erlon Charles, 2014-02-17 13:51:00