Та же переменная данных, передаваемая для просмотра

#php #codeigniter

#php #codeigniter

Вопрос:

В моем проекте у меня есть один раздел поиска с 3 полями выбора. Я передал ей значение, используя

 $data['restaurant_all']=$this->restaurant_model->get_all('','','','','','yes')->result();
$data['state_all']=$this->state_model->get_all();
$data['menu_all']=$this->menu_model->get_all('all','','','','','','yes')->result();
$data['restaurant']=$this->input->post('restaurant');
$data['state']=$this->input->post('area');
$data['food_type']=$this->input->post('menu');
  

Мне нужно это утверждение на всех моих страницах. Есть ли какой-либо способ выполнить это, не записывая эти инструкции на всех страницах

Ответ №1:

a. расширьте контроллер по умолчанию, создав файл MY_Contoller.php в подходящем месте.

б. создайте пользовательский класс, который расширит контроллер по умолчанию.

c. добавьте защищенную или общедоступную переменную $data в пользовательский класс.

e. сделайте что-нибудь с данными, используя __construct()

d. сделайте так, чтобы каждый контроллер расширял пользовательский контроллер.

e. вы можете получить доступ к этой переменной, как к любой другой переменной класса.

пример кода:

MY_Controller.php

 class APP extends CI_controller {
        protected $data;

        function __construct() {
                parent::__construct();
                $this->_init();
        }

        function _init() {
                $this->data['state'] = $this->input->post('area');
        }
}
  

обычные контроллеры:

 class Welcome extends APP {

        function __construct() {
                parent::__construct();
        }            

        function view() {
               /* pass this data value like normal data param */
               $this->load->view('some_view', $this->data);
        }
}
  

надеюсь, это поможет.

Комментарии:

1. Я уже получил это решение. Но это не работает в первый раз, потому что я создал файл в папке application / libraries. Но когда я изменил это на application / Core, у меня это сработало. Однако спасибо вам за ваш ответ

2. рад, что у вас это сработало. кроме того, убедитесь, что при использовании CI 2.x; расширьте все основные классы в папке application / core

Ответ №2:

Используйте константы, в /config/constants.php