2011-12-01 1 views
0

я хочу следующее поведение:правила маршрутизации CodeIgnitor необходимой помощь, CI версия 2.0

  1. http://www.mysite.com/ должен пойти: http://mysite.com/welcome

    (СДЕЛАНА установкой default_controller в routes.php)

  2. http://www.mysite.com/controllerName/functionName Должно перейти к controllerName, а затем его функции, ЕСЛИ КОНТРОЛЛЕР СУЩЕСТВУЕТ.
  3. Если controllerName не существует, он должен перейти к: specialController и specialFunction с functionaName в качестве параметра

например. http://www.mysite.com/greatProducts должен стать http://www.mysite.com/specialController/specialFunction/greatProducts если greatProducts контроллер не существует, (это может быть любая строка, а не просто greatProduct, случай быть прежним, т.е. контроллер с таким именем не существует)

Хотели бы желательно осуществить это с помощью маршрутизации правила, Изменение сегментов URI при редактировании библиотек не представляется мне хорошим вариантом.

ЭТО РАБОТАЕТ:

Я попробовал его редактированием routes.php в ядро ​​/ routes.php и добавляя что-то вроде

`$segments = array("specialController","specialFunction",$segments[0]); 
     return $segments;` 

, если было установлено, что контроллер не существует.

ответ

3

Попробуйте это (непроверенные, но еще должен работать):

$route['greatPtroduct/(:any)'] = "specialController/specialFunction/$1"; 

Контроллер:

class specialController extends CI_Controller { 

    function specialFunction($method) 
    { 
    if(method_exists($this,$method)) 
    { 
     $this->$method; 
    } 
    else 
    { 
     show_404; 
    } 
    } 

UPDATE:

это сложнее. Маршрут, как

$route['(:any)/(:any)'] = "specialController/specialFunction/$1"; 

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

$route['contact'] = "contact"; 
$route['about'] = "about"; 
// and so on 
$route['(:any)/(:any)'] = "specialController/specialFunction/$1"; 
+0

привет, спасибо за помощь. Это кажется близким. Но здесь контроллер 'greatProduct', может быть и что-то еще. Это может быть любая строка, например 'anotherProdcut',' cheapProduct', и этот контроллер НЕ существует, поэтому требуется правило маршрутизации. – DhruvPathak

+0

@DhruvPathak Я обновил свой ответ; я получил это прямо сейчас? иначе не могли бы вы быть более ясными по своим намерениям, так как я не понимаю ** ИЗМЕНИТЬ: ** Получил это сейчас, дайте мне некоторое время подумать об этом –

+0

есть незначительное изменение в пункте 3 вопроса, Посмотрите. Я также упомянул настройку, которая заставила ее работать, но она основана на редактировании библиотек, а не на config. – DhruvPathak

 Смежные вопросы

  • Нет связанных вопросов^_^