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

时间:2014-07-26 09:40:24

标签: php database codeigniter model controller

我正在使用基于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');
}


根据我到目前为止收到的帮助,这里有一个问题的更新:

<小时/> 我添加了一个帮助文件(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;
}

?>

在config / autoload.php中,我添加了新的帮助文件。

$autoload['helper'] = array('url', 'init');

在我的模型“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();
    }
}
?>

我尝试用一​​个简单的函数测试它:

public function test()
{
    print_r(init_data());
}

这会生成一个空白屏幕。

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

$data['crew_pizza_book']="a"; 
$data['lanare']="b";                   
$data['kiosk_rec']="c"; 

我得到了很好的印刷品:

Array ( [crew_pizza_book] => a [lanare] => b [kiosk_rec] => c ) 

1 个答案:

答案 0 :(得分:0)

你可以解决这个问题:

首先创建一个名为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;
}

然后在autoload

helper 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');