Маршрут для перенаправления на контроллер + действие по умолчанию на CodeIgniter? - PullRequest
2 голосов
/ 16 ноября 2011

Я сейчас работаю над проектом с Codeigniter.

У меня есть один контроллер с именем Cat

class Cat extends CI_Controller {

    function __construct(){
        parent::__construct();
    }

    function index($action){
        // code here
    }

}

и маршрут (в маршрутах.php)

$route['cats/:any'] = 'cat/index/$1';

И это работает, если я использую этот URL, например:http://www.mywebsite.com/cats/display

Тем не менее, если пользователь изменяет URL-адрес на http://www.mywebsite.com/cats/, он больше не работает.Codeigniter пишет: 404 Страница не найдена - запрошенная вами страница не найдена.

Поэтому моя цель состоит в том, чтобы перенаправить его на http://www.mywebsite.com/cats/display по умолчанию, если он находится на странице "Коты / 101"

Нужно ли делать другой маршрут?Я пытался

$route['cats'] = 'cat/display';

... но безуспешно.Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Есть несколько способов сделать это:

Вы можете предоставить $ action с 'display' по умолчанию:

function index($action = 'display'){}

OR

У вас может быть условие для физического перенаправления их

function index($action = ''){
   if(empty($action)){redirect('/cats/display');}
   //OTher Code
}

OR

Вам нужно указать маршруты, когда там ничего нет:

$route['cats'] = 'cat/index/display'; //OR the next one
$route['cats'] = 'cat/index'; //This requires an function similar to the second option above

Кроме того, если у вас есть только определенное количество опций в вашем маршруте (например, 'display', 'edit', 'new'), возможно, стоит настроить ваш маршрут следующим образом:

$route['cats/([display|edit|new]+)'] = 'cat/index/$1';

Изменить:

Последний созданный вами маршрут:

$route['cats'] = 'cat/display';

на самом деле ищет function display() в контроллере, а не передает индекс параметру 'display'

0 голосов
/ 25 июля 2012

лучший способ использования функции _remap в вашем контроллере - это переназначение вашего URL на конкретный метод контроллера

class Cat extends CI_Controller {

    function __construct(){
        parent::__construct();
    }

    function _remap($action)
    {
       switch ($action)
       {
            case 'display':
             $this->display();
            break;
            default:
               $this->index();
            break;
        }
    }

    function index($action){
        // code here
    }

    function display(){
        echo "i will display";
    }
    }

проверка переназначения в руководстве пользователя CI

...