Cześć,
Mam następującą bibliotekę:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class CI_Components{
private $sorted_components = array(); private $links_to_files = array(); private $components = array();
function generate($components){
$this->components = $components;
$this->sorted_components = $this->sortComponents($this->components);
$this->links_to_files['css'] = $this->createCssLinks($this->sorted_components['css']);
$this->links_to_files['js'] = $this->createJsLinks($this->sorted_components['js']);
return $this->links_to_files;
}
private function sortComponents($components){
foreach ($components as $component){
switch ($component['admin_components_to_add_file_type']){
case 'js':
$this->sorted_components['js'][] = $component;
break;
case 'css':
$this->sorted_components['css'][] = $component;
break;
}
}
}
private function createCssLinks($css_files_data){
}
private function createJsLinks($js_files_data){
}
}
Odwołuję się do niej z kontrolera:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin extends CI_Controller {
public $components = array();
public function __construct(){
parent::__construct();
$this->load->model('admin_model');
$this->data['menu'] = $this->generate_menu();
}
public function index(){
$this->load->library('components');
$this->components = $this->admin_model->getComponentsToAdd();
$this->components->generate($this->components);
}
private function generate_menu(){
$data['menu_elements'] = $this->admin_model->getDefaultPagesToMenu();
return $this->load->view('admin/menu', $data, TRUE);
}
private function get_elements_to_add(){
$data['elements_to_add'] = $this->admin_model->getElementsToAdd();
$this->load->helper('components');
}
}
I funkcja modelu w który zwraca tablice z obiektami do wygenerowania:
<?php
class Admin_Model extends CI_Model{
private $_admin_default_pages = 'admin_default_pages';
private $_admin_components_to_add = 'admin_components_to_add';
public function getDefaultPagesToMenu(){
$query = $this->db->where('admin_default_pages_status', 1)->get($this->_admin_default_pages);
return $query->result_array();
}
public function getComponentsToAdd(){
$query = $this->db->where('admin_components_to_add_status', 1)->get($this->_admin_components_to_add);
return $query->result();
}
}
Niestety wywala to dłąd:
Fatal error: Call to a member function generate() on a non-object in /opt/lampp/htdocs/cms/application/controllers/admin.php on line 17
Metoda "getComponentsToAdd" z modelu zwraca mi dokładnie:
[0]=>
object(stdClass)#21 (5) {
["admin_components_to_add_id"]=>
string(1) "1"
["admin_components_to_add_file_type"]=>
string(3) "css"
["admin_components_to_add_file_name"]=>
string(4) "test"
["admin_components_to_add_extension"]=>
string(3) "css"
["admin_components_to_add_status"]=>
string(1) "1"
}
}
Próbowałem rozwiązać ten problem foreach'em:
public function index(){
$this->load->library('components');
$this->components = $this->admin_model->getComponentsToAdd();
foreach ($this->components as $component){
$this->components->generate($this->components);
}
}
Lecz, niestety to nie pomaga. Macie jakiś pomysł jak rozwiązać mój problem?
Z góry dzięki
Pozdrawiam
NickOver