CodeIgniter: добавление параметров в URL - PullRequest
5 голосов
/ 10 января 2011

Начал свой первый проект CI, и мне просто интересно, как я обрабатываю параметры URL? У меня есть контроллер с именем 'city', и я изменил свой mod_rewrite, чтобы localhost / codeigniter использовал rewrite для localhost / codeigniter / city. То, что я хочу сделать, это добавить название города в конце URL и использовать сегмент для запроса таблицы.

Так что мой пример будет localhost / codeigniter / edinburgh. Я бы взял последний сегмент, а затем создать запрос SQL. Однако я думаю, что когда я помещаю Эдинбург в URL, CI считает, что я ищу контроллер под названием «Эдинбург».

Нужно ли добавлять маршрутизацию или что-то подобное?

Ответы [ 4 ]

9 голосов
/ 10 января 2011

Вы действительно можете использовать маршрутизацию , чтобы сделать это.

$ route [': any'] = "контроллер / метод";

Это перенаправит ВСЁ после вашей базовой ссылки на указанный контроллер и метод внутри этого контроллера. Чтобы получить URL-сегменты, вы можете использовать URI helper .

$ this-> load-> помощник ( 'URL'); // сначала загружаем помощника

$ city = $ this-> uri-> сегмент (1);

При доступе к http://localhost/codeigniter/edinburgh переменная $ city в приведенном выше примере будет представлять собой Эдинбург.

Надеюсь, это поможет!

PS. Вам не нужно mod_rewrite, чтобы указать контроллер по умолчанию. Вы можете установить его в своем config.php под Routes. Укажите city в качестве контроллера по умолчанию, и вы можете избавиться от mod_rewrite.

3 голосов
/ 10 января 2011

Да, вы можете использовать маршрут :

$route[':any/'] = "myclass/by_city_method";

Но почему бы вам не использовать модуль (например) city для получения классической схемы uri?

class city extends Controller { 
   public void index($city=false) {
       if ($city) { } else { }
   }
}

Редактировать: вы даже можете выбрать город в качестве контроллера по умолчанию в глобальном конфигурационном файле.

2 голосов
/ 10 января 2011

Другой метод:

route.php:

$route['city/(:any)'] = "city/city_lookup/$1";

city.php

<?php 
class City extends Controller {

    function City()
    {
        parent::Controller();
    }

    function city_lookup($id)
    {
        echo "$id";
    }
}
0 голосов
/ 10 января 2011
$path = "/codeignter/city/viewcity/Edinburg";

Это приведет к вызову контроллера City , будет выполнен метод viewcity с параметром, значение которого 'Edinburg' !

Вот код для вашего контроллера ...

class city extends Controller { 
   public viewcity($city='') {
       echo ($city === '') ? "The city you want to view is {$city}!" : "not defined!";
   }
}

Аминь:)

...