Codeigniter: Как я могу создать управляемые базой данных URI - PullRequest
0 голосов
/ 27 марта 2012

Мои маршруты зависят от языка и выглядят так: mydomain.com / ru

$route['default_controller'] = "home";
$route['404_override'] = '';
$route['(\w{2})/(.*)'] = '$2';
$route['(\w{2})'] = $route['default_controller'];  

, но у меня есть содержимое базы данных, которое я хотел бы добавить в URI после языка mydomain.com / jp / the-slug-of-japanese-page

У меня есть таблица с именем posts , и она содержит строки содержимого с заголовком и слагамии языки готовы к работе, но я не совсем понимаю, как отредактировать мой домашний контроллер, чтобы проверить, поступает ли URI из базы данных.

Вот мой метод домашнего контроллера.

class Home extends CI_Controller {

  function __construct()
  {
    parent::__construct();
  }
     public function index($title = '') {
       if(strlen($url)) {
        /* get content by title from DB */
        $data['url'] = $url;
        $this->load->view('user_home', $data);
       }
     } 
 }

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Не уверен, что я полностью понимаю ваш вопрос, но я думаю, что вы хотите найти uri в вашей базе данных, это очень просто:

function index()
{
    $needle = $this->uri->segment(2);
    $this->db->where('slug', $needle);
    $this->db->from('table_name');
    if($this->db->count_all_results() > 0)
    { //here the uri exists in your database }
    else
    { //here don't }
}

¿Это может быть то, что вам нужно?

(конечно, этот код должен быть в модели, а не в контроллере, чтобы сохранить MVC codeigniter)

0 голосов
/ 27 марта 2012

Вы можете написать так в контроллере

public function index($title = '') {

      if(strlen($url)) {
        /* get content by title from DB */
        /* load content view */
       }
   /* load index view */

}

Маршруты

$route['default_controller'] = "home";
$route['404_override'] = '';
$route['(\w{2})/(:any)'] = $route['default_controller'].'/index/$2';
$route['(\w{2})'] = $route['default_controller'];
...