Mam następującą bibliotekę:
class CI_Components{ 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){ die; 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:
class Admin extends CI_Controller { 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