CodeIgniter глобальная переменная - PullRequest
10 голосов
/ 27 марта 2010

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

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

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

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

Спасибо.

Ответы [ 4 ]

16 голосов
/ 27 марта 2010

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, такие как параметры загрузки.

5 голосов
/ 27 марта 2010

Я столкнулся с подобной проблемой ранее сегодня. Я обнаружил, что проще, чем глобальные, использовать константы. Вы можете определить файл констант, который будет загружаться из вашего файла 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

1 голос
/ 11 января 2013

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

например.

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;
    }
}

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

0 голосов
/ 27 марта 2010

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

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