В моем проекте CI я хотел бы использовать полный динамический контроль страницы. Итак, у меня есть два метода контроллера, которые загружают файлы php. Запросы управления моделью основаны на сегментах URL. Весь вывод страницы генерируется автоматически в php-файле представлений в зависимости от url и результатов базы данных, за исключением файла index.php.динамическое управление страницей в codeigniter
Правильно ли это?
Контроллер
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 the 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);
}
Модель (Каждое меню имеет содержание в базе данных. При создании нового подменю вы должны добавить содержание)
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();
}
маршрутизации
$route['404_override'] = '';
$route['/:any/(:any)'] = 'pages/view/$1';
$route['(:any)'] = 'pages/view/$1';
$route['Index'] = 'pages/index';
$route['default_controller'] = 'pages/index';
Как это относится к изображениям blob? Кроме того, у вас есть жестко закодированный $ page = "content", который, я уверен, не предназначен для того, чтобы быть там ... –
Также, как это связано с mysqli? Я вижу только mysql-вызов, ничего не связано с mysqli. Mysql-call не должен быть даже там: '$ this-> db-> where()' будет выполнять экранирование для вас. – Grilse
В чем проблема? Что не работает? Что ожидалось? Как он отличается от ожидаемого? – itachi