在CodeIgniter中,我尝试用来自DB的代码制作标题,我的控制器代码:
public function index()
{
$this->load->model('main_model');
$data['result'] = $this->main_model->get_tipsters();
$this->load->view('template/header_view',$data);
}
并且header_view:
<?php foreach($result->result() as $row): ?>
<div id="tipster"><a href="<?=site_url();?>/bets/author/<?=$row->name;?>"><img src="<?=$row->photo;?>" /><br /><?=$row->name;?></a></div>
<?php endforeach; ?>
标题工作仅限自我查看文件,但不在其他页面中。 我在控制器中包含这样的标题:
$this->load->view('template/header_view');
$this->load->view("/bets/index",$data);
$this->load->view('template/footer_view');
获取此错误
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: result
Filename: template/header_view.php
Line Number: 14
Fatal error: Call to a member function result() on a non-object in /home/user/domains/test.com/public_html/application/views/template/header_view.php on line 14
第14行是foreach,我早早复制了。
答案 0 :(得分:0)
由于您的标题视图文件总是期待$result
,因此您需要为所有控制器方法提供它:
$this->load->model('main_model');
$data['result'] = $this->main_model->get_tipsters();
$data['main'] = $this->main_model->get_main_data(); //example
$this->load->view('template/header_view',$data);
$this->load->view("bets/index",$data);
$this->load->view('template/footer_view');
这可能会变得很麻烦,因此请考虑创建一个扩展CI_Controller的{MYR>文件 - more about that here。
答案 1 :(得分:0)
您可以在Common_model中创建一个函数 用于在头文件上进行fecthing结果。
并通过在视图文件中调用该函数直接获取该函数的结果。
common_model.php
function your_function()
{
// code for fetching data for header
/// return your result here
}
直接在视图文件中调用此函数
$rs = $this->Common_model->your_function();
注意:默认情况下,common_model是加载的。如果禁用,则需要在视图文件中加载模型。
答案 2 :(得分:0)
在视图元素文件(header_view)上加载CI
对象并使用CI
对象加载和调用模型方法
$CI = & get_instance()
$CI->load->model('main_model');
$result = $CI->main_model->get_tipsters();
<?php foreach($result->result() as $row): ?>
<div id="tipster"><a href="<?=site_url();?>/bets/author/<?=$row->name;?>"><img src="<?=$row->photo;?>" /><br /><?=$row->name;?></a></div>
<?php endforeach; ?>
并从控制器中删除代码