2012-06-06 143 views
0

我遇到了codeigniter中的路由問題。Codeigniter:路由和URI段

可以說我有一個名爲控制器頁,有一個名叫產品方法執行以下操作:

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

您不需要2個額外的細分。一個應該就足夠了。

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

但是,如果我是你,我會讓網址的第一個段代替產品的id。

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

這樣,如果我只知道產品ID,我就不必鍵入example.com//123這可能會導致一些問題。如果我沒有弄錯,如果你這樣做,CI會嘗試加載名爲123的控制器。