2015-05-03 3 views
3

Эй, ребята, я только что узнал о маршрутизации в CodeIgniter, и теперь я немного запутался.CodeIgniter: URL маршрутизации на Codeigniter

У меня есть URL-адрес, как это: http://localhost/norwin/list_group/get_product_by_group/1

который:

  1. list_group является контроллером,

  2. get_product_by_group является методом,

  3. и '1' передается параметр.

Я хочу свести к минимуму URL-адрес с помощью маршрута. Таким образом, я могу иметь URL вроде:

http://localhost/norwin/group/'group_name' 

И это мой код на route.php:

$route['group/(:any)'] = 'list_group/get_product_by_group/$1'; 

это мой контроллер:

public function get_product_by_group($group_name) 
    { 

      if($this->uri->segment(3)) 
      { 
        $this->load->database(); 
        $data['product_data'] = $this->group_model->list_product_by_group($group_name); 
        $this->load->view('fend/list_product', $data); 

      } 
      else 
      { 
        redirect('list_group'); 
      } 

    } 

И это мой код на вид вызова, который вызывает контроллер:

<?= base_url('group/'. $value->group_name);?> 

мой про blem is: Я не могу получить никакого результата по маршруту, он всегда посылает меня на 'list_group'.

Возможно, у кого-то есть хороший подход для этого.

Благодарим за помощь.

+0

конфигурация маршрута отлично. с какими ошибками вы сталкиваетесь? – Kamran

+0

@KamranAdil: результат всегда перенаправляет меня на «list_group» – TableMan

+0

, он перенаправляет вас, потому что у вас нет '$ this-> uri-> segment (3)' в вашем URL-адресе. У вас есть только две группы «group» и «group_name». измените его на '$ this-> uri-> segment (2)' – Kamran

ответ

2

Вы перенаправляетесь, потому что $this->uri->segment(3) ничего не возвращает, так как ваш URL-адрес http://localhost/norwin/group/'group_name' имеет только 2 сегмента.

Codeigniter $this->uri->segment(n); работает следующим образом.

URL: http://localhost/norwin/group/group_name/some_test

вернет

$this->uri->segment(1); // group 
$this->uri->segment(2); // group_name 
$this->uri->segment(3); // some_test 

вы должны изменить $this->uri->segment(3) к $this->uri->segment(2)

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