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

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

У меня также автозагрузка контроллера в соответствии с этим руководством. Расширение основного контроллера

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

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

Спасибо.

1: Создайте MY_Controller в application/libraries со следующими параметрами:

 class MY_Controller extends Controller { var $data; //constructor function } 

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

 class Contact extends Controller { //to.. } class Contact extends MY_Controller { $this->load->view('contact_view', $this->data); } 

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

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

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

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

 define(MY_CONSTANT,'my constant info'); 

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

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

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

Я использовал вспомогательную функцию для вызова глобальной функции!

например.

 function get_user($userid){ $CI =& get_instance(); $query = $CI->db->get_where('users', array('id' => $userid), 1, 0); foreach ($query->result() as $row){ // Return a object with userdata! return $row; } } 

Теперь у меня есть доступ к моим userdata везде.

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