2013-05-14 1 views
0

Я продолжаю думать о том, как обращаться с URL-адресами и страницами с CI, но я не могу придумать, как это сделать.CodeIgniter обрабатывает URL-сегменты

Я пытаюсь справиться с URL вроде этого:

site.com/shop (shop is my controller) 
site.com/shop/3 (page 3) 
site.com/shop/cat/4 (categorie and page 4) 
site.com/shop/cat/subcat/3 (cat & subcat & page) 

Есть ли хороший способ сделать это?

ответ

1

Вы можете создать функции контроллера для обработки:

  • магазин и магазин страницы
  • категории и категории страницы
  • подкатегорий и подкатегорию страницы

функции контроллера

В вашем shop контроллера вы могли бы иметь следующие функции:

function index($page = NULL) 
{ 
    if ($page === NULL) 
    { 
     //load default shop page 
    } 
    else //check if $page is number (valid parameter) 
    { 
     //load shop page supplied as parameter 
    } 
} 

function category($category = NULL, $page = 1) 
{ 
    //$page is page number to be displayed, default 1 
    //don't trust the values in the URL, so validate them 
} 

function subcategory($category = NULL, $subcategory = NULL, $page = 1) 
{ 
    //$page is page number to be displayed, default 1 
    //don't trust the values in the URL, so validate them 
} 

Routing

Затем можно настроить следующие routes в application/config/routes.php. Эти маршруты будут сопоставлять URL-адреса с соответствующими функциями контроллера. Регулярное выражение позволит искать значения

//you may want to change the regex, depending on what category values are allowed 

//Example: site.com/shop/1  
$route['shop/(:num)'] = "shop/index/$1"; 

//Example: site.com/shop/electronics 
$route['shop/([a-z]+)'] = "shop/category/$1"; 

//Example: site.com/shop/electronics/2 
$route['shop/([a-z]+)/(:num)'] = "shop/category/$1/$2"; 

//Example: site.com/shop/electronics/computers 
$route['shop/([a-z]+)/([a-z]+)'] = "shop/subcategory/$1/$2"; 

//Example: site.com/shop/electronics/computers/4 
$route['shop/([a-z]+)/([a-z]+)/(:num)'] = "shop/subcategory/$1/$2/$3"; 
+0

в подкатегории функция ... как я могу узнать имя кота? –

+0

К сожалению, моя ошибка, сейчас я отредактирую свой ответ! – jleft

+0

@ fred.kassi Вы хотите, чтобы _category_, _subcategory_ и _page_ все были параметрами? – jleft