Php 通过帮助文件加载模型会导致屏幕空白

Php 通过帮助文件加载模型会导致屏幕空白,php,database,codeigniter,model,controller,Php,Database,Codeigniter,Model,Controller,我正在做一个基于Codeigniter框架的系统,并使用数据库中的大量数据 困扰我的是,在每一个函数中,我都需要声明下面方形框中的内容。每次我用可视内容创建一个新函数时,我都需要重新填充它。难道没有办法把它简单化吗?例如,在普通php中,您可以: include_once 'topmenu_dbs'; 因为现在我要在队列中添加另一个数据库查询,这就需要我单独更改所有函数,这需要一些时间。如果我将来需要做更多的事情,同样的旅行也是必要的 public function entre() {

我正在做一个基于Codeigniter框架的系统,并使用数据库中的大量数据

困扰我的是,在每一个函数中,我都需要声明下面方形框中的内容。每次我用可视内容创建一个新函数时,我都需要重新填充它。难道没有办法把它简单化吗?例如,在普通php中,您可以:

include_once 'topmenu_dbs';
因为现在我要在队列中添加另一个数据库查询,这就需要我单独更改所有函数,这需要一些时间。如果我将来需要做更多的事情,同样的旅行也是必要的

public function entre()
{
    $this->load->model('mylibrary');

    $data['crew_pizza_book']=$this->mylibrary->crew_pizza_book();
    $data['lanare']=$this->mylibrary->lanare();
    $data['kiosk_rec']=$this->mylibrary->kiosk_rec();

    $this->load->view('header');
    $this->load->view('topmenu', $data);
    $this->load->view('entre');
    $this->load->view('footer');
}

根据我迄今为止收到的帮助,我对该问题进行了更新:
我添加了一个helper文件(init_helper.php)并将其放在application/helpers中

<?php

function init_data()
{
    $CI=get_instance();

    $CI->load->model('mylibrary');

    $data['crew_pizza_book']=$this->mylibrary->crew_pizza_book(); 
    $data['lanare']=$this->mylibrary->lanare();                   
    $data['kiosk_rec']=$this->mylibrary->kiosk_rec(); 

    return $data;
}

?>
在我的模型“mylibrary”中,它如下所示:

<?php 
class Mylibrary extends CI_Model
{

    function crew_pizza_book(){
        $query=$this->db->query("SELECT * FROM crew_pizza_book ORDER BY pizza");
        return $query->result();
    }

    function lanare(){
        $query=$this->db->query("SELECT * FROM crew_lanare ORDER BY id ASC");
        return $query->result();
    }

    function kiosk_rec(){
        $query=$this->db->query("SELECT * FROM crew_kiosk_rec");
        return $query->result();
    }
}
?>
$data['crew_pizza_book']="a"; 
$data['lanare']="b";                   
$data['kiosk_rec']="c"; 
这将生成一个空白屏幕

当我尝试像这样设置数组的静态值时:

<?php 
class Mylibrary extends CI_Model
{

    function crew_pizza_book(){
        $query=$this->db->query("SELECT * FROM crew_pizza_book ORDER BY pizza");
        return $query->result();
    }

    function lanare(){
        $query=$this->db->query("SELECT * FROM crew_lanare ORDER BY id ASC");
        return $query->result();
    }

    function kiosk_rec(){
        $query=$this->db->query("SELECT * FROM crew_kiosk_rec");
        return $query->result();
    }
}
?>
$data['crew_pizza_book']="a"; 
$data['lanare']="b";                   
$data['kiosk_rec']="c"; 
我得到了一张很好的照片:

Array ( [crew_pizza_book] => a [lanare] => b [kiosk_rec] => c ) 
您可以通过以下方式解决此问题:

首先创建一个名为say的助手文件init_helper.php,并在其中添加一个函数:

function init_data()
{
    $CI = &get_instance();
    $CI->load->model("my_model");
    $data['crew_pizza_book'] = $CI->my_model->crew_pizza_book(); 
    $data['lanare'] = $CI->my_model->lanare();                   
    $data['kiosk_rec'] = $CI->my_model->kiosk_rec();    
    return $data;
}
然后在
config/autoload.php

/*
| -------------------------------------------------------------------
|  Auto-load Helper Files
| -------------------------------------------------------------------
| Prototype:
|
|   $autoload['helper'] = array('url', 'file');
*/

$autoload['helper'] = array('init'); //ignore the '_helper.php' portion of the filename
现在在代码中,将其称为:

$this->load->view('header');
$this->load->view('topmenu', init_data());   
$this->load->view('entre');
$this->load->view('footer');

厉害。正是我要找的。然而当我应用它时,我得到了一个PHP错误:“未定义变量:init_data”除了将“my_model”更改为“mylibrary”之外,我还做了上述操作。@simonblank-一旦你自动加载init_helper.PHP,你能调用
print_r(init_data())控制器或视图中的任何位置?当我尝试按照您的建议操作时,我得到了一个空白的白色屏幕。在控制器和视图中都尝试过。@Simonblank-我只是在codeigniter安装中创建了这个(我没有使用模型,因为我不知道你的模型是如何工作的),但是当我打印(init_data())时,我得到了
数组([crew_pizza_book]=>a[lanare]=>b[kiosk_rec]=>c)
@simonblank-同样
init_data
不能是
未定义变量
,就像您在评论中提到的那样。它必须是一个函数…
$CI=get_instance()应该是
$CI=&get_instance()。另外,
$this->mylibrary->crew\u pizza\u book()
应该是
$CI->mylibrary->crew\u pizza\u book()
。与其他两个函数相同。请检查我的最新答案。现在我们正在做饭!工作起来很有魅力!非常感谢。不客气!很高兴它成功了:)