Codeigniter: использование сегментов URL в запросе - PullRequest
0 голосов
/ 21 февраля 2012

Я только начал работать с CodeIgniter, и у меня возникли некоторые проблемы с URL-адресами на основе сегментов.Я понимаю, как звонить им, делая $variable = $this->uri->segment(2);, но всякий раз, когда я иду на URL, я получаю 404. Есть ли что-то, что мне нужно сделать для маршрутизации URI?

Например, я пытаюсь перейти наlocalhost / ci / index.php / games / 1000 (где 1000 будет идентификатором игры), но я получаю 404. localhost / ci / index.php / games / работает нормально.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Для того, чтобы это работало, вам понадобится контроллер с именем games.php с этим содержанием

class Games extends CI_Controller
{
    public function index($id)
    {
        echo $id;
    }
}

Если вы не делаете что-то подобное

class Games extends CI_Controller
{
    public function index()
    {
        echo 'this is index';
    }
    public function game($id)
    {
        echo $id;
    }
}

и добавьте это к своему routes.php

$route['game/(:any)']  = "games/game/$1";
2 голосов
/ 21 февраля 2012

По умолчанию 2-й сегмент URI является методом (функцией) в контроллере, который CI автоматически вызывает.

Таким образом, в вашем случае вы фактически пытаетесь вызвать функцию с именем 1000() в игровом контроллере, которая не существует и, следовательно, приводит к 404.

Вместо этого, я думаю, вам нужно вызвать функцию index() и передать ей переменную 1000.

Так что, если вам нужно перейти к localhost/ci/index.php/games/index/1000, вы не должны больше получать 404, однако ваш сегмент URI теперь будет неправильным, чтобы получить переменную 1000.

Вот рабочий пример контроллера с исправленным сегментом URI:

class Games extends CI_Controller
{
    // good habit to call __construct in order to load 
    // any models, libraries, or helpers used throughout this controller
    public function __construct() 
    {
        parent::__construct();
    }

    // default controller
    public function index()
    {
        // this should display 1000
        echo $this->uri->segment(3);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...