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

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

у меня также есть автоматическая загрузка контроллера после этого руководства Расширение Контроллера Ядра

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

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

Спасибо.

4 ответов


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 настройки загрузки.


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

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

затем вы можете добавить свои константы :

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