2013-07-19 4 views
1

У меня есть контроллер статей и функция просмотра в нем, чтобы показать отдельную статью, так что мой URL, подобныКак иметь как domain.com/ URL, <имя-статьи> в CodeIgniter

http://domain.com/articles/view/<article-id>/<article-title>

Мой код:

class Articles extends CI_Controller { 
    function view($id=NULL,$slug=""){ 
     //Code to fetch article details from DB by id 
    } 
} 

Как это сделать мой URL, чтобы выглядеть http://domain.com/<article-title>

Спасибо.

ответ

3

Определите все контроллеры в адресной конфигурации маршрутов для своих собственных методов. В конце маршрутов конфигурации добавить следующее правило -

$route['(:any)'] = 'articles/view/$1'; 

Все запросы, кроме ранее определенный маршрут теперь будет подан artcile/view метод контроллера.

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

$this->uri->segment(1); 

в view функция.

Всякий раз, когда статья обновляется заголовком, обновляйте также таблицу сопоставления.

+0

@ varun1505 вы могли бы использовать заголовок статьи в качестве уникального идентификатора и передать его в качестве первого сегмент в URI –

1

Я сделал аналогичную вещь для своего блога. @Varun Согласно комментарию Sachin это подчеркивание маршрута маршрутизации domain.com/articles/view/ на самом деле вы увидите URL как domain.com/ как и ожидалось.

Также я продлен URLS уровня, как этот

$route['spring/(:any)'] = "controller_name/method_name/$1"; 
$route['hibernate/(:any)'] = "controller_name/method_name/$1"; 

Так фактический URL выглядеть следующим образом

domainname.com/spring/spring-jdbc-example which is mapped to "controller_name/method_name/$1"