как передать массив данных в вид в codeigniter
коллеги! Подскажите, пожалуйста, как в Codeigniter передать массив данных из модели в вид!?)) Имеем следующую ситуацию:
==== Модель ====
$query = $this->db->query('SELECT name, others FROM customers');
$data = $query->result();
return $data;
передаю в Контроллер:
public function index(){
$this->load->model('model_information');
$data = $this->model_information->index();
$this->load->view('test',$data);
}
здесь функция print_r выводит все как надо...
..но в виде:
<h1>Hello</h1>
<?=$name?>
<?php print_r($data);?>
Кидает такие портянки:
============================================= A PHP Error was encountered Severity: Notice
Message: Undefined variable: name
Filename: views/test.php
Line Number: 4
Backtrace:
File: C:\xampp\htdocs\Test\application\views\test.php Line: 4 Function: _error_handler
File: C:\xampp\htdocs\Test\application\controllers\IndexCompany.php Line: 34 Function: view
File: C:\xampp\htdocs\Test\index.php Line: 315 Function: require_once
==================================================
A PHP Error was encountered Severity: Notice
Message: Undefined variable: data
Filename: views/test.php
Line Number: 18
Backtrace:
File: C:\xampp\htdocs\Test\application\views\test.php Line: 18 Function: _error_handler
File: C:\xampp\htdocs\Test\application\controllers\IndexCompany.php Line: 34 Function: view
File: C:\xampp\htdocs\Test\index.php Line: 315 Function: require_once
================================================
уже третий день ищу ответ - и все впустую((((((((((
т.е. в КОНТРОЛЛЕРЕ надо определять переменные - тогда они нормально заходят в ВИД!! А если данные приходят с МОДЕЛИ, то как их показать ВИДУ??? особенно если это массив!!! Как-то переопределять или....??? Вообщем: подскажите, пожалуйста, если кто знает!!) Спасибо!!
Ответы (1 шт):
Тут конечно приходится идти наощупь, но $data это массив массивов, индексирован он скорее всего с нуля, потому во вьюху передается нечто типа:
$this->load->view('test', [
0 => ['name' => '', 'others' => ''],
1 => ['name' => '', 'others' => ''],
2 => ['name' => '', 'others' => ''],
]);
И вот вопрос - где тут хоть что-то напоминающее $data или $name. Ответ простой - нигде.
Чтобы обратиться к именованным переменным их естественно надо назвать, поэтому:
$this->load->view('test', ['data' => $data]);
Вот теперь во вьюхе будет доступен массив результатов в переменной $data, переменная называется $data именно потому, что ключ в массиве, передаваемом во вьюху, называется так же - data. И так как это массив - по нему надо проитерироваться с помощью foreach.