我正在尝试使用codeigniter从我的数据库显示信息,但我一直在发送错误消息。错误消息为Severity: Warning Message: Invalid argument supplied for foreach()
。
这是我的模特:
class stuffModel extends CI_Model {
private $stuff_table = 'Stuff';
function __construct()
{
parent::__construct();
$this->load->database();
}
public function getItem()
{
$un = array();
$res = $this->db->get($this->stuff_table);
$results = $res->result();
return $results;
}
}
这是我的控制器:
public function displayStuff() {
$STUFF= $this->stuffModel->getItem();
$this->load->view('myView',array('stuff' => $STUFF));
}
这是我的观点:
<?php
foreach ($stuff as $s) {
echo"<h1>".$s['Items']."</h1>";
}?>
错误讯息为Severity: Notice Message: Undefined variable: stuff
和Severity: Warning Message: Invalid argument supplied for foreach()
答案 0 :(得分:0)
没有什么东西对我跳出来,它看起来应该有效。拍摄这个想法有点麻烦。
按如下方式更改控制器
public function displayStuff()
{
$data['stuff'] = $this->stuffModel->getItem();
var_dump($data); //share this output here
$this->load->view('myView', $data);
}
答案 1 :(得分:0)
您没有将模型加载到控制器中,这就是您无法从控制器调用模型的原因。
首先将模型加载到控制器
$this-load->model('modelName');
而不是打电话
$this->modelName->methodName();
答案 2 :(得分:0)
控制器中的更改
确保模型类的对象在构造函数中声明,如下所示
function showOnChange(self) {
var allDiv = self.options;
for(var i = 0; i < allDiv.length; i++){
document.getElementById(allDiv[i].value).style.display = "none";
}
document.getElementById(self.value).style.display = 'block';
}
然后在displayStuff函数中,
$this->load->model('stuffModel', 'stuffModel', TRUE);
模型中的更改
public function displayStuff() {
$data['stuff']= $this->stuffModel->getItem();
$this->load->view('myView',$data);
}
最后在视图中
您可以通过迭代显示存储在数组中的值
public function getItem()
{
$res = $this->db->get($this->stuff_table);
if ($res->num_rows() > 0) {
return $res->result_array();
} else {
return array();
}
}