The CI Instance should created with reference.
$CI = &get_instance();
Edit:
You did mistake in your model.
class Project extends CI_Model { // you should extend model not controller
Pregunta
Here is my helper function in a helper file 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;
}
}
}
When I call it, I get the following error,
Severity: Notice
Message: Undefined property: Project::$Project
Filename: helpers/misc_helper.php
Line Number: 28
Edit: Here is my model,
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;
}
}
Solución
The CI Instance should created with reference.
$CI = &get_instance();
Edit:
You did mistake in your model.
class Project extends CI_Model { // you should extend model not controller
Otros consejos
What are you trying to acheive? By the looks of it you're trying to loop through all projects (or perhaps a certain number of them) and display them?
If that's the case then firstly (as kumar_v has said) you need to pass the get_instance();
function by reference as this will allow you to use the original CodeIgniter object rather than creating a copy of it.
http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html
Secondly, it looks like you're trying to access a property of each project (pId, brandImageUrl, title). If this is the case, you need to assign $CI->Project->getAllProjects();
to a variable and loop through these results. 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;
}
}
}
Hope that helps.