2011-01-10 3 views
5

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

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

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

ответ

9

Для этого вы можете использовать routing.

$ route [': any'] = "controller/method";

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

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

$ city = $ this-> uri-> segment (1);

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

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

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

+0

Спасибо, теперь мой метод post_insert я просто обращаются так же. Должен ли я указывать методы для игнорирования? – iamjonesy

+1

Если вам нужна более конкретная маршрутизация, просто добавьте их как маршрут выше $ route [': any']. – dvk

3

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

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

Но почему бы вам не использовать модуль под названием (например) города, чтобы получить классическую схему Ури?

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

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

0
$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!"; 
    } 
} 

аминь :)

2

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

маршрут.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"; 
    } 
} 
Смежные вопросы