Глобальная переменная CodeIgniter

Я использую $data во всех своих представлениях $this->load->view('my_view', $data);

Я имею, также автоматически загружают Контроллер после этого руководства, Расширяющего Базовый Контроллер

Но я хочу сделать $data глобальным потому что в views существует боковая панель, которая является постоянной для целого проекта и отображается, информация выбрала через дб в автоматически загруженном контроллере

В настоящее время я должен вручную записать $data ['todo'] для каждого и информации о выборке из автоматически загруженной модели.

Спасибо.

10
задан Shishant 26 March 2010 в 22:15
поделиться

3 ответа

1: Создайте MY_Controller в приложении / библиотеках со следующим:

 класс MY_Controller расширяет контроллер {{ {1}} var $ data; 
 // функция-конструктор 
} 
 

2: Замените Контроллер на MY_Controller во всех файлах вашего контроллера и загрузите представления с $ this-> data

 class Contact расширяет Controller {// до ..} 
 
class Contact расширяет MY_Controller {
 $ this-> load-> view ('contact_view', $ this-> data); 
} 
 

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

16
ответ дан 3 December 2019 в 18:32
поделиться

Вместо того, чтобы делать данные представления глобальными, я бы рекомендовал использовать HMVC для создания модуля для создания этого представления боковой панели. HMVC - хороший чистый способ кодирования частичных представлений.

-1
ответ дан 3 December 2019 в 18:32
поделиться

Сегодня я столкнулся с похожей проблемой. Я обнаружил, что проще, чем глобальные переменные, - использовать константы. Вы можете определить файл констант, который будет загружаться из вашего файла index.php:

// Include additional constants
$defines_file = 'includes/defines.php';
if (file_exists($defines_file))
{
    require_once($defines_file);
} 

Затем вы можете добавить свои константы в файл define.php :

define(MY_CONSTANT,'my constant info');

Таким образом, они будут доступны в любом файле во всей системе либо напрямую: echo MY_CONSTANT; , либо вы можете назначить их переменным.

Я решил, что этот способ будет для меня проще, так как у меня будет только одно место, куда я могу пойти, когда / если мне понадобится изменить константы.

Подробнее: http://codeigniter.com/forums/viewthread/56981/#280205

5
ответ дан 3 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: