2012-06-04 6 views
1

Я пытаюсь создавать динамические страницы без создания новых файлов и получения данных из базы данных ...CodeIgniter проверить, если URI сегмент существует в базе данных

поэтому мой стол будет, как:

Pages 
------ 
id | page_name | text 
1 | about  | about page goes here 
2 | contact | contact page goes here 

теперь мой вопрос: как мне удастся сделать $this->uri->segement(1), чтобы автоматически проверить, существует ли указанное имя страницы в базе данных?

Мне нужно создать новый контроллер, который будет обрабатывать все это или?

+0

Посмотрите на [крючки] (http://codeigniter.com/user_guide/general/hooks.html). –

ответ

1

Если у вас есть несколько страниц, которые вы хотите проверить, я бы рекомендовал иметь диспетчер страниц, который управляет этими страницами. Что-то вроде этого

class Pages extends CI_Controller { 
    public function view($page_name) 
    { 
     $this->load->Pages_model(); 

     if($this->Pages_model->does_exist($page_name)) 
     { 
      // Does exist. Do things. 
     } else 
     { 
      show_404(); 
     } 
    } 
} 

В вашем routes.php, вы направляете ваши about и contact страницы (и все другие, вы можете иметь) к контроллеру страницы.

$route['about'] = "pages/view/about"; 
$route['contact'] = "pages/view/contact"; 

Ваш Pages_model будет нужна простая функция, которая проверяет, является ли имя страницы существует в базе данных.

function does_exist($page_name) { 

    $this->db->where('name', $page_name); // assuming you have a table with a `name` field 
    $query = $this->db->get('pages'); // select from the `pages` table 
    return $query->num_rows() > 0; // returns bool 

} 
+0

спасибо Себастьян. Это еще один способ сделать это. – fxuser

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