标题中db的行,设置为在所有页面中显示

时间:2014-12-08 14:50:49

标签: php mysql database codeigniter

在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,我早早复制了。

3 个答案:

答案 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; ?>

并从控制器中删除代码