Я использую $ 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 – хороший чистый способ кодирования частичных представлений.