2016-06-01 199 views
2

我在codeigniter中的uri段遇到問題我期待開發產品和產品詳細信息,所以我爲它創建了一個控制器並傳遞了產品名稱的參數以顯示產品名稱,因此我的url將變成了這個樣子顯示產品類別

本地主機/ PROJECT_NAME /產品/ PRODUCT_NAME

,這部分工作爲我好,但我感到困惑。如果我想顯示的產品類別和產品名稱,比如我什麼我試圖讓我的網址像這樣

本地主機/ PROJECT_NAME /產品/ CATEGORY_NAME/PRODUCT_NAME

,所以我將如何做到這一點,現在當我通過在類別名稱就說明了我404沒有找到您請求未找到頁面。因爲有時會直接顯示產品,有時如果用戶通過類別瀏覽產品詳細信息,那麼類別名稱將在URL中傳遞,以及這些區域是如何工作的?我有這個

這裏大困惑是我的產品

public function products($product_name) { 
     if($this->uri->segment(3)) { 
      $category = ucwords(str_replace('-', " ", $product_name)); 
      $product = ucwords(str_replace('-', " ", $this->uri->segment(3))); 
     } else { 
      $product = ucwords(str_replace('-', " ", $product_name)); 
     } 

     $page_data = $this->get_data->get_Data($product, 'name', 'products'); 
     $data['title'] = 'Products - ' . $page_data->row()->name; 
     $data['body_class'] = 'poductsdetails'; 

     $this->load->view('includes/header.php', $data); 
     $this->load->view('templates/navigation.php'); 

     $data['content'] = array(
       'name'  => $page_data->row()->name, 
       'price'  => $page_data->row()->price, 
       'description' => $page_data->row()->description, 
       'picture'  => $page_data->row()->picture, 
       'category' => $page_data->row()->category, 
      ); 

     $this->load->view('products/details', $data); 
     $this->load->view('templates/footer-form.php'); 
     $this->load->view('includes/footer.php'); 
    } 

這裏控制器是我的路我已經創建

$route['default_controller'] = 'home'; 
$route['admin']    = 'admin/index'; 
$route['admin/([a-z])']  = 'admin/$1'; 
$route['products/(:any)'] = 'home/products/$1'; 
$route['products/(:any)'] = 'home/products/$1/$2'; 
$route['products/(:any)'] = 'home/products/$1/$2/$3'; 
$route['(:any)']    = 'home/page/$1'; 
$route['(:any)']    = 'home/page/$1/$2'; 
+0

通過類別名稱查看個別產品詳細信息是沒有用的 –

+0

嗯,這是我的客戶的要求,他正在爲seo目的而做,而我在這裏被阻塞 –

回答

6

您剛纔在路由中傳遞了一個參數就是爲什麼它不能找到

改變這樣

$route['products/(:any)'] = 'home/products/$1'; 
$route['products/(:any)/(:any)'] = 'home/products/$1/$2'; 
$route['products/(:any)/(:any)/(:any)'] = 'home/products/$1/$2/$3'; 

它將工作路線。

+0

是的,它工作了謝謝你,你可以解釋我about(:any)因爲我知道產品將是文件夾名稱,所以什麼(:任何)指的是? –

+0

(:any)這是一個參數,它將以url形式作爲產品或類別傳遞,比如添加$ 1或$ 2。 –

+0

非常感謝你有很多的知識謝謝 –

0

如果CATEGORY_NAME在該控制器定義的函數,那麼試試這個

$route['products/category_name/(:any)'] = 'products/category_name/$1'; 
相關問題