0

我在 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.
}

要访问特定产品,我的 url 将是 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';

它可以正常工作,但我宁愿不要在 url 末尾添加两个附加段。

4

1 回答 1

1

您不需要 2 个额外的段。一个应该足够了。

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

但是,如果我是您,我会将 URL 设置为将第一段作为产品的 id。

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

That way, if I only know the product id, I wouldn't have to type example.com//123 which might cause some problem. If I'm not mistaken, if you do that, CI will try to load a controller named 123.

于 2012-06-07T02:20:19.540 回答