2012-07-07 4 views
4

В моем проекте 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'; 
+0

Как это относится к изображениям blob? Кроме того, у вас есть жестко закодированный $ page = "content", который, я уверен, не предназначен для того, чтобы быть там ... –

+0

Также, как это связано с mysqli? Я вижу только mysql-вызов, ничего не связано с mysqli. Mysql-call не должен быть даже там: '$ this-> db-> where()' будет выполнять экранирование для вас. – Grilse

+0

В чем проблема? Что не работает? Что ожидалось? Как он отличается от ожидаемого? – itachi

ответ

2

Вы используете CodeIgniter просто отлично, нет необходимости в какой-либо модификации структуры.

Смежные вопросы