Codeigniter:路由和URI段

时间:2012-06-06 15:04:22

标签: codeigniter

我在codeigniter中遇到路由问题。

假设我有一个名为Pages的控制器,其命名为product的方法可以执行以下操作:

public function product() {
    $this->load->model('pages_model');
    $productid = $this->uri->segment(3);

    $data['product'] = $this->pages_model->getProduct($productid);
    // ...load view, etc.
}

要访问特定产品,我的网址为www.example.com/pages/product/ID。

我想设置自定义路线,以便访问www.example.com/name-of-product访问该产品。

然而,把

$route['name-of-product'] = 'pages/product/ID'; 

不起作用。它将加载产品视图,但不会加载产品数据。如果我说

$route['name-of-product/:any/ID'] = 'pages/product/ID';

它可以正常工作,但我宁愿在网址的末尾没有两个额外的段。

1 个答案:

答案 0 :(得分:1)

您不需要2个额外的细分。一个就足够了。

$route['PRODUCT_NAME/PRODUCT_ID'] = 'pages/product/PRODUCT_ID';

但是,如果我是你,我会将URL设为第一段,而不是产品的ID。

$route['PRODUCT_ID/PRODUCT_NAME'] = 'pages/product/PRODUCT_ID';

这样,如果我只知道产品ID,我就不必输入example.com//123,这可能会导致一些问题。如果我没有弄错,如果你这样做,CI将尝试加载名为123的控制器。