2016-06-01 5 views
2

codeigniterのuriセグメントに問題があります。私は製品と製品の詳細を開発していますので、コントローラを作成して製品名のパラメータを渡してURLに商品名を表示してくださいこのカテゴリが表示されている商品

はlocalhost/PROJECT_NAME /製品/ PRODUCT_NAME

この部分は私のために正常に動作しているが、私は、私は私のような製品カテゴリと製品名として表示したい場合かについて混乱していますようになりますこのようなURLを作成しようとしています

はlocalhost/PROJECT_NAME /製品/カテゴリ名/ PRODUCT_NAME

ので、私は、カテゴリ名を渡すとき、私はそれは私にあなたが見つかりませんでした要求されたページが見つかりません404を示し、今これを行いますか。何度か直接製品が表示されることがあります。ユーザーがカテゴリを介して製品の詳細を調べると、カテゴリ名がURLに渡されます。また、このセグメンテーションはどのように機能しますか?私は、カテゴリ名はこのコントローラで定義された関数であるならば、これを試して

$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

はい、私が知っているように製品はフォルダ名になるので何(:any)を指していますか? –

+0

(:any)これは、$ 1または$ 2を追加したような、商品またはカテゴリとしてurlに渡すパラメータです。 –

+0

大変ありがとうございます。たくさんの知識をありがとうございます –

0

を作成しているここでは、この

について大きな混乱を持つここの製品

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['products/category_name/(:any)'] = 'products/category_name/$1'; 
関連する問題