Как сделать переменные доступными во всех контроллерах в Codeigniter? - PullRequest
0 голосов
/ 19 ноября 2011

Я добавил некоторые переменные в конец класса "CI_Controller", например:

$data['foo'] = 'bar';
$data['animal'] = 'dog';
$data['justin_beiber'] = 'terrible';

Поскольку я хочу, чтобы эти переменные были доступны на ВСЕХ моих контроллерах, и поскольку все контроллеры расширяют этот CI_Controller, я подумал, что это будет работать:

echo $data['foo'];
die();

Я поместил это в контроллер, который расширяет CI_Controller. Но это ничего не выводит. Как заставить это работать?

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Убедитесь, что вы расширили свой главный контроллер, а не изменили его .Также убедитесь, что ваши контроллеры расширяют ваш новый контроллер (MY_controller), а не оригинал, поскольку у нас есть что-то вроде:

class  MY_Controller  extends  CI_Controller  {
// constructor and variables defined here
}

Также обратите внимание, что вам придется вызывать ваши переменные следующим образом: $this->foo['bar'], есливы решаете использовать его таким образом ... Для «нормального» вызова переменных ($foo['bar']) создайте CI helper и autooload .

0 голосов
/ 19 ноября 2011

Может быть, правильное использование параметров конфигурации поможет вам.

http://codeigniter.com/user_guide/libraries/config.html

Вы можете вызвать элемент конфигурации из любой точки структуры CI.

и почему ваши переменные не отражаются: вы можете установить защищенные переменные в классе, чтобы сделать их видимыми с помощью наследования, но я не думаю, что это лучший способ сделать это. По крайней мере, не зная, почему вы хотите, чтобы $ data ['foo'] был доступен везде без использования помощника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...