php - dynamic Page control in codeigniter -
in ci project, use full dynamic page control. so, iâve 2 controller methods, load php files. model controlâs queries based on url segments. page output generated automatically in views php file depending on url , results of database, except index.php file.
is right way?
controller
public function index() { $data['title'] = "index"; $data['nav'] = $this->content_model->get_index_nav(); //todo $this->load->view('templates/header', $data); $this->load->view('templates/nav', $data); $this->load->view('templates/nav_pict', $data); $this->load->view('pages/aktualis', $data); $this->load->view('templates/footer', $data); } public function view($page) { $page = 'content'; $this->load->helper('text'); $this->load->helper('url'); $page = lcfirst(convert_accented_characters(urldecode($page))); if ( ! file_exists('application/views/pages/'.$page.'.php')) { show_404(); } $data['title'] = ucfirst($page); // capitalize first letter $data['nav'] = $this->content_model->get_nav(); $data['content'] = $this->content_model->get_content(); if(empty($data['content'])) { show_404(); } $this->load->view('templates/header', $data); $this->load->view('templates/nav', $data); $this->load->view('pages/'.$page, $data); $this->load->view('templates/footer', $data); }
model (each menu has content in database. when create new submenu must add content)
public function get_content() { $this->db->select('content.*, mainmenu.label'); $this->db->from('content'); $this->db->join('mainmenu', 'mainmenu.id = content.katid', 'left'); $this->db->where('mainmenu.label', mysql_escape_string(urldecode(end($this->uri->segments)))); $query = $this->db->get(); return $query->result_array(); }
routing
$route['404_override'] = ''; $route['/:any/(:any)'] = 'pages/view/$1'; $route['(:any)'] = 'pages/view/$1'; $route['index'] = 'pages/index'; $route['default_controller'] = 'pages/index';
you're using codeigniter fine, there's no need structure modification.
Comments
Post a Comment