Codeigniter 解决从视图调用函数时无法预见的视图问题
我在解决一个问题时遇到了一些真正的困难。基本上,我将搜索一个房间,并显示符合条件的房间列表(包括分页)。现在,当我试图要求房间的形象时,问题出现了。第一个图像将显示,但其余图像不会显示,我得到错误信息: 遇到PHP错误严重性:注意 消息:未定义的偏移量:0 文件名:views/search_view.php 电话号码:27 遇到PHP错误严重性:注意 消息:正在尝试获取非对象的属性 文件名:views/search_view.php 电话号码:27 这就是我到目前为止所做的 我的模型:Codeigniter 解决从视图调用函数时无法预见的视图问题,codeigniter,codeigniter-2,Codeigniter,Codeigniter 2,我在解决一个问题时遇到了一些真正的困难。基本上,我将搜索一个房间,并显示符合条件的房间列表(包括分页)。现在,当我试图要求房间的形象时,问题出现了。第一个图像将显示,但其余图像不会显示,我得到错误信息: 遇到PHP错误严重性:注意 消息:未定义的偏移量:0 文件名:views/search_view.php 电话号码:27 遇到PHP错误严重性:注意 消息:正在尝试获取非对象的属性 文件名:views/search_view.php 电话号码:27 这就是我到目前为止所做的 我的模型: func
function get_room_image($rid)
{
$q = $this->db
->where('room_id',$rid)
->limit(1)
->get('room_image');
return $q->result();
}
function search_rooms()
{
$q = $this->db
->where('features', $this->input->post('features'))
->get('rooms');
$room['results'] = $q->result();
return $room['results'];
}
我的控制器:
function search()
{
$data['main_content'] = 'search_view';
$data['page_title'] = 'Search';
$data['results'] = $this->site_model->search_rooms();
$this->load->view('includes/template',$data);
}
$data['main_content'] = 'search_view';
$data['page_title'] = 'Search';
$data['results'] = $this->site_model->search_rooms();
$this->load->view('includes/template',$data);
我的看法是:
...
<?php foreach ($results['results'] as $room) {
$room_images = $this->site_model->get_room_image($room->id); ?>
<div class="col2 bot">
<div class="col_head"></div>
<div class="col_info">
<table border="0" cellpadding="5" cellspacing="5">
<tr><td>
<img src="<?php echo base_url() . 'room/' . $room_images[0]->image_name; ?>" border="0" class="imgbox" />
</td>
...
因此,它似乎没有在每次迭代中正确执行get_room_image函数
欢迎任何建议
首先,我认为您不应该从视图中调用模型。您应该从控制器内调用模型并将其传递给视图。另一篇关于这一点的帖子: 您应该尝试对模型中的表执行联接 型号:
function search_rooms()
{
$q = $this->db
->select('*')
->from('rooms')
->where('features', $this->input->post('features'))
->join('room_image', 'rooms.id = room_image.room_id');
return $q;
}
控制器:
function search()
{
$data['main_content'] = 'search_view';
$data['page_title'] = 'Search';
$data['results'] = $this->site_model->search_rooms();
$this->load->view('includes/template',$data);
}
$data['main_content'] = 'search_view';
$data['page_title'] = 'Search';
$data['results'] = $this->site_model->search_rooms();
$this->load->view('includes/template',$data);
视图:
首先,我认为不应该从视图中调用模型。您应该从控制器内调用模型并将其传递给视图。另一篇关于这一点的帖子:
您应该尝试对模型中的表执行联接
型号:
function search_rooms()
{
$q = $this->db
->select('*')
->from('rooms')
->where('features', $this->input->post('features'))
->join('room_image', 'rooms.id = room_image.room_id');
return $q;
}
控制器:
function search()
{
$data['main_content'] = 'search_view';
$data['page_title'] = 'Search';
$data['results'] = $this->site_model->search_rooms();
$this->load->view('includes/template',$data);
}
$data['main_content'] = 'search_view';
$data['page_title'] = 'Search';
$data['results'] = $this->site_model->search_rooms();
$this->load->view('includes/template',$data);
视图:
问题解决了,因为我忘了在db查询字符串中的一行中添加“;”问题解决了,因为我忘了在db查询字符串中的一行中添加“;”尝试在该行上执行变量转储($room\u images)——查看实际存在的内容。我猜[0]的索引对于在该行上执行var_转储($room_images)的一些variablestry来说是错误的-看看实际上是什么。我猜[0]的索引对于某些变量是错误的当将$room\u images[0]->image\u name转换为$room\u images->image\u name时,我得到了错误:消息:尝试获取非object的属性您是否尝试了联接查询,或者在转换$room\u images[0]时通过添加“;”来修复代码->image\u name to$room\u images->image\u name我收到错误:消息:尝试获取非object的属性您是否尝试了联接查询,或者通过添加“;”来修复代码?