Я новичок в CodeIgniter, и у меня возникла следующая проблема:
Когда я загружаю представление из контроллера, я использовал следующий код:
$this->load->view('includes/header');
$this->load->view('includes/main_menu');
$this->load->view('show_users');
$this->load->view('includes/footer');
Теперь я создал шаблон, который загружает заголовок, меню, содержимое и нижний колонтитул, поэтому мне не нужно загружать все эти представления внутри каждого контроллера. Это все работает нормально, пока я не передам данные через шаблон к представлению.
Ситуация сейчас такая:
контроллер — Шаблон — просмотр
Контроллер: (show_users.php)
$data['userdata'] = $this->users_model->get_all_users();
$data['page'] = 'show_users';
$this->load->view('template', $data);
Шаблон: (template.php)
$this->load->view('includes/header');
$this->load->view('includes/main_menu');
$this->load->view($page, $userdata);
$this->load->view('includes/footer');
Вид: (show_users.php)
<div id="users_table">
<table border="1">
<tr>
<th>ID</th><th>First Name</th><th>Last Name</th>
</tr>
<?php
foreach($userdata as $r): ?>
<tr><td><?php echo $r['id']; ?></td><td><?php echo $r['firstName']; ?></td><td><?php echo $r['lastName']; ?></td></tr>
<?php endforeach; ?>
</table>
</div>
Теперь я передаю переменную ‘userdata’ к представлению, используя
$this->load->view($page, $userdata);
и это прекрасно работает. Но я хочу использовать этот шаблон на всем сайте, поэтому второй параметр не всегда $ userdata. (может быть случайным массивом, строкой и т. д. с другим именем переменной)
Есть ли способ, которым я могу решить это?
заранее спасибо
Я думаю, что это будет работать нормально, если вы используете разумные имена:
$data['userdata'] = $this->users_model->get_all_users();
$data['page'] = 'show_users';
$this->load->view('template', $data);
$this->load->view($page, $userdata);
так же может быть:
$data['view_data'] = $this->users_model->get_all_users();
$this->load->view($page, $view_data);
Всегда используя $data['view_data']
в вашем контроллере вы можете назначить ему любую вещь, если индекс остается прежним.
больше примеров:
$data['view_data'] = some_other_method_thats_not_getting_users();
$this->load->view($page, $view_data);
Других решений пока нет …