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