Как я могу достичь этой схемы URI в CodeIgniter? - PullRequest
0 голосов
/ 24 июня 2011

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

Итак, все эти URI: http://example.com/category1/some-post http://example.com/category2/some-posthttp://example.com/category3/some-post

Все пойдут к контроллеру "категорий", где он найдет категорию из базы данных.

Я могу достаточно легко добиться этого с помощью $routes['(:any)'] = 'categories';, но, конечно, тогдавсе другие мои статические контроллеры не будут работать, такие как администратор, пользователь и т. д.

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

Ответы [ 4 ]

0 голосов
/ 25 июня 2011

Другой вариант - объявить все ваши статические контроллеры в ваших маршрутах ...

0 голосов
/ 24 июня 2011

Если вы посмотрите на WordPress, они начинают категории с /category/, и все страницы - это что-то еще, поэтому вам, вероятно, следует сделать это наоборот.

0 голосов
/ 25 июня 2011

Как сказал Франсуа, вам нужно будет создать маршрут для каждой категории. Это можно немного упростить с помощью простого массива, как показано ниже:

$categories = array('cat1','cat2','etc...');

foreach($categories as $cat)
{
    $routes["$cat/(:any)"] = "category/$cat/\$1"
}

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

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

0 голосов
/ 24 июня 2011

Вы не можете, если не создадите конкретные маршруты для каждой категории вручную.

Например:

$route['php'] = 'categories';
$route['java'] = 'categories';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...