这是帮手文件misc_helper.php中的辅助函数,
function echoEditorsPickItems($projects = array('02134444', '0314020000')) {
if (!is_null($projects)) {
$CI = &get_instance();
$CI->load->database();
$CI->load->model('Project');
$projects = $CI->Project->getAllProjects(); // this is the 28th line
// getAllProjects() returns
// an arrays of item
for ($i=0; $i<EDITORS_PICK_ITEM_LIMIT; $i++) {
// $CI->Project->getItem('0214010001');
$out = '';
$out .= '<li>';
$out .= '<span>';
$out .= '<a href="'. base_url() . 'portfolio/detail/' . $projects[$i]['pId'] .'" class="post-img">';
$out .= '<img src="'. base_url() . 'assets/img/blog/' . $projects[$i]['brandImageUrl'] . '" alt="' . $projects[$i]['title'] . '">';
$out .= '<span class="overlay"></span>';
$out .= '</a>';
$out .= '</span>';
$out .= '<p class="wrap">';
$out .= '<a href="'. base_url() . 'portfolio/detail/' . $projects[$i]['pId'] .'" class="rp_title">' . $projects[$i]['title'] . '</a>';
$out .= '<small class="rp_date">' . $CI->Project->title . '</small>';
$out .= '</p>';
$out .= '</li>';
echo $out;
}
}
}
当我调用它时,我收到以下错误,
Severity: Notice
Message: Undefined property: Project::$Project
Filename: helpers/misc_helper.php
Line Number: 28
编辑:这是我的模特,
class Project extends CI_Controller {
private $tableName = DB_TABLE_NAME_PROJECT;
public $title;
public $description;
public $client;
public $skills;
public $preparedBy;
public $catagory;
public $date;
public $url;
public $images;
public $templateType;
function __construct() {
parent::__construct();
$this->load->database();
}
public function getItem($projectId = NULL) {
if (!is_null($projectId)) {
$res = $this->db->get_where($this->tableName, array('pId' => $projectId));
if ($res->num_rows) {
$this->title = $res->row(1)->title;
$this->description = $res->row(1)->description;
$this->client = $res->row(1)->client;
$this->preparedBy = $res->row(1)->preparedBy;
$this->skills = explode(TOKEN_DELIMINATOR, $res->row(1)->skills);
$this->catagory = $res->row(1)->catagory;
$this->date = $res->row(1)->date;
$this->url = $res->row(1)->url;
$this->images = explode(TOKEN_DELIMINATOR, $res->row(1)->images);
$this->templateType = ($res->row(1)->templateType=='1'? 1:0);
return TRUE;
}
return FALSE;
}
return FALSE;
}
public function getAllProjects() {
$res = $this->db->get($this->tableName);
$projects = array();
for ($i=0; $i<$res->num_rows(); $i++){
$projects[$i] = array();
$projects[$i]['title'] = $res->row($i)->title;
$projects[$i]['catagory'] = explode(TOKEN_DELIMINATOR, $res->row($i)->catagory);
$projects[$i]['brandImageUrl'] = $res->row($i)->brandImageUrl;
$projects[$i]['pId'] = $res->row($i)->pId;
}
return $projects;
}
}
答案 0 :(得分:1)
CI实例应该参考创建。
$CI = &get_instance();
修改强>
你的模特错了。
class Project extends CI_Model { // you should extend model not controller
答案 1 :(得分:1)
你想要实现什么?从它的外观来看,你试图遍历所有项目(或者可能是一定数量的项目)并显示它们?
如果是这种情况,那么首先(如kumar_v所说)你需要通过引用传递get_instance();
函数,因为这将允许你使用原始CodeIgniter对象而不是创建它的副本。
http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html
其次,看起来您正在尝试访问每个项目的属性(pId,brandImageUrl,title)。如果是这种情况,则需要将$CI->Project->getAllProjects();
分配给变量并循环显示这些结果。 e.g。
function echoEditorsPickItems($projects = array('02134444', '0314020000')) {
if (!is_null($projects)) {
$CI =& get_instance();
$CI->load->model('Project');
$projects = $CI->Project->getAllProjects();
foreach ($projects as $project) {
$out = '';
$out .= '<li>';
$out .= '<span>';
$out .= '<a href="' . base_url() . 'portfolio/detail/' . $project->pId . '" class="post-img">';
$out .= '<img src="' . base_url() . 'assets/img/blog/' . $project->brandImageUrl . '" alt="' . $project->title . '">';
$out .= '<span class="overlay"></span>';
$out .= '</a>';
$out .= '</span>';
$out .= '<p class="wrap">';
$out .= '<a href="' . base_url() . 'portfolio/detail/' . $project->pId . '" class="rp_title">' . $project->title . '</a>';
$out .= '<small class="rp_date">' . $project->title . '</small>';
$out .= '</p>';
$out .= '</li>';
echo $out;
}
}
}
希望有所帮助。