CodeIgniter $ this-> load-> vars () - PullRequest
       0

CodeIgniter $ this-> load-> vars ()

4 голосов
/ 24 апреля 2011

Мне интересно, как $this->load->vars() работает в CodeIgniter. Документация по этому поводу довольно расплывчата.

У меня есть следующий код:

    $init = $this->init->set();

    $this->load->view('include/header', $init);
    $this->load->view('include/nav');

    $dates = $this->planner_model->create_date_list();
    $this->load->view('planner/dates_content', $dates);

    $detail = $this->planner_model->create_detail_list();
    $this->load->view('planner/detail_content', $detail);


    $this->load->view('include/footer');

Однако мне также нужен массив $dates в моем представлении detail_content. Я пытался загрузить его с $this->load->vars() и надеялся, что он добавится к массиву $detail, потому что документация CI гласит:

Вы можете сделать несколько вызовов этой функции. Данные кэшируются и объединяются в один массив для преобразования в переменные.

Будет ли это работать, если я сделаю $detail['dates'] = $dates;? Будет ли он добавить массив $dates к $detail['dates'] тогда?

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 24 апреля 2011

$this->load->vars() идеально подходит для этой цели. Попробуйте это:

$init = $this->init->set();// Won't be passed to the next 2 views
$this->load->view('include/header', $init);
$this->load->view('include/nav');

$dates = $this->planner_model->create_date_list();
$this->load->vars($dates);
$this->load->view('planner/dates_content');

$detail = $this->planner_model->create_detail_list();
$this->load->vars($detail);
$this->load->view('planner/detail_content');

Что выглядит странным для меня, так это то, что обычно вы передаете ассоциативный массив в качестве данных, например $data['my_var_name'] = $var_value, поэтому я предполагаю, что вызовы вашей модели возвращают данные, уже структурированные с именами переменных (ключами массива), которые вы будете использовать в ваш взгляд, который я нахожу странным, но тогда я ничего не знаю о вашем заявлении.

Вот более «обычная» версия:

$data['dates'] = $this->planner_model->create_date_list();
$this->load->view('planner/dates_content', $data);

$data['detail'] = $this->planner_model->create_detail_list();
// receives both dates and detail
$this->load->view('planner/detail_content', $data);
2 голосов
/ 24 апреля 2011

Как указано в других ответах и ​​в руководстве пользователя, использование $this->load->vars() аналогично включению второго аргумента в $this->load->view().

Но из руководства пользователя:

Причина, по которой вы можете использовать эту функцию независимо, заключается в том, что вы хотите установить некоторые глобальные переменные в конструкторе вашего контроллера и получить ихстать доступным в любом файле представления, загруженном из любой функции.

Для меня это единственная причина, по которой вы будете использовать $this->load->vars().Как говорит @madmartigan, более удобно использовать загрузчик представления со вторым аргументом.

2 голосов
/ 24 апреля 2011

Вы пробовали просто создать массив, который вы передаете различным представлениям? Я считаю, $this->load->vars() ведет себя неожиданно.

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