Передача данных для просмотра из контроллера с использованием шаблонов - PullRequest
2 голосов
/ 14 марта 2019

Контроллер:

public function home(){
$data['page_title'] = 'Home';
$data['navbar_content'] = $this->model->get($var);
$data['page_content'] = $this->model->get($var1);

$this->load->view('template/header');
$this->load->view('template/navbar');
$this->load->view('pages/home');
$this->load->view('template/footer');
}

Используя приведенный выше пример кода, так как codeigniter позволяет передавать переменные / данные только через массив или объект из контроллера в представление, то каков «правильный» способ передачимои данные?

Я мог бы просто передать данные при загрузке заголовка, и все будет хорошо.

$this->load->view('template/header', $data);
$this->load->view('template/navbar');
$this->load->view('pages/home');
$this->load->view('template/footer');

Но мне это не кажется «правильным», я думаю, я хотел, чтобы в моем коде было что-то понятное, например:

$this->load->view('template/header', $title);
$this->load->view('template/navbar', $navbar_content);
$this->load->view('pages/home', $page_content);
$this->load->view('template/footer');

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

Но так как я не могу этого сделать, есть ли «правильный» способ сделать это?или я слишком много думаю об этом?

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

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

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Это правильный путь согласно документации: https://codeigniter.com/userguide3/general/views.html

Данные передаются из контроллера в представление через массив или объект во втором параметре метода загрузки представления.

Вы также должны посмотреть: Codeigniter: лучший способ структурировать частичные представления

Вы должны структурировать свои представления иерархически.

$this->load->view('template/header', ["title" => $title]);
$this->load->view('template/navbar', ["navbar_content" => $navbar_content]);
$this->load->view('pages/home', ["page_content" => $page_content]);
$this->load->view('template/footer');
0 голосов
/ 14 марта 2019

CodeIgniter передает данные из контроллеров в представления.

Вам необходимо передать $data представлениям.

Вы передадите массив с его ключами как строки или даже массивы (многомерныетакже массивы).

Итак, вам нужно передать его каждому представлению, которое вы используете $data.

$this->load->view('template/header', $data);
$this->load->view('template/navbar', $data);
$this->load->view('pages/home', $data);
$this->load->view('template/footer', $data);

И, по вашему мнению, вы можете получить доступ к $data с помощью ключей.

Например:

, если ваши данные

$data['header_banner'] = 'Header Banner';

По вашему мнению, вы можете получить доступ к этому значению с помощью:

echo $header_banner;

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

Это что-то вроде строки PHP во встроенной функции extract ()

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