【发布时间】:2014-07-26 09:40:23
【问题描述】:
我正在做一个基于 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 )
【问题讨论】:
-
$CI=get_instance();应该是$CI=&get_instance();。$this->mylibrary->crew_pizza_book()也应该是$CI->mylibrary->crew_pizza_book()。与其他两个功能相同。请检查我的更新答案。 -
现在我们正在做饭!奇迹般有效!谢谢!
-
不客气!很高兴它起作用了:)
标签: php database codeigniter model controller