Маршрутизация CodeIgniter

Integer.valueOf(s)

подобно [1 111]

new Integer(Integer.parseInt(s))

, различие valueOf() возвраты Integer, и parseInt() возвраты int (тип примитива). Также обратите внимание, что valueOf() может возвратить кэшируемый Integer экземпляр, который может вызвать запутывающие результаты, где результат == тесты кажется периодически корректным. Прежде автоупаковка могла быть различием в удобстве после java 1.5, это действительно не имеет значения.

, Кроме того, Integer.parseInt(s) может взять примитивный тип данных также.

5
задан Lisinge 25 July 2012 в 11:35
поделиться

3 ответа

Мой ответ основан на ответе Колина.

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

Мои маршруты, с которыми я экспериментировал для моего конкретного проекта, работали следующим образом:

$route['default_controller'] = "main";
$route['main/:any'] = "main";
$route['events/:any'] = "main/events";
$route['search/:any'] = "main/search";
$route['events'] = "main/events";
$route['search'] = "main/search";
$route[':any'] = "main";

Если я ввел " http: // localhost /index.php/search/1234/4321 "Он будет перенаправлен на main / search, и я могу затем использовать $ this-> uri-> segment (2); для получения ] 1234 .

В вашем сценарии я бы попробовал (порядок очень важен):

$route['products/:any/:any'] = "products/getProductByName";
$route['products/:any'] = "products/getCategoryByName";

Я не знаю достаточно, чтобы маршрутизировать так, как вы хотели ( products / $ 1 / getProductByName / $ 2 ), но я' Я не уверен, как бы вы создали контроллер для обработки этой конкретной формы URI. Используя операторы $ this-> uri-> segment (n); , упомянутые Колином в вашем контроллере, вы сможете делать то, что хотите.

11
ответ дан 18 December 2019 в 09:08
поделиться

Вы должны использовать URI-класс для извлечения сегментов «documentpen» и «rc805» из вашего URL-адреса. Затем вы можете использовать эти значения в любых нужных вам функциях.

Например, если ваш URL-адрес www.yoursite.com/products/docupen/rc805, вы должны использовать следующее в контроллере продуктов для извлечения сегментов и их назначения в переменные:

$category = $this->uri->segment(2); //docupen
$product = $this->uri->segment(3); //rc805

Затем вы можете использовать $ category и $ product по мере необходимости.

5
ответ дан 18 December 2019 в 09:08
поделиться

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

$route['products/(:any)'] = "products/getCategoryByName/$1";
$route['products/(:any)/(:any)'] = "products/$1/getProductByName/$2";
2
ответ дан 18 December 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: