2

私はciに完全に慣れていません、

私はこのようなURLを持っています:

http://localhost/mvc/post/prod_id/1

そして私はそれをしたい:

http://localhost/mvc/post/my-best-product

これまでのところ、私はそれらすべてをなんとかルーティングすることができ、関数もhome/post/学びました。segment

url_titleしかし、私の質問は、実際のURLを実際にどのように取得するかです。

この特定の主題に関する情報は見つかりませんでした。私が見つけたのはurl_title、ciでの使用方法とルーティング方法だけです。ただし、実際にベースURL名を変更する方法については説明されていません。

私を正しい方向に導いてください。

ソリューションの例:

public function my_method($product_slug)
{
    $product1 = "training-for-recruitment";
    $product2 = "training-for-od";

    if($product_slug==$product1)
    {
        $this->load->view('prod1');

    }else if($product_slug==$product2)
    {
        $this->load->view('prod2');

    }else{
        show_404();
    }
}

これは私がやろうとしていることではありません。Slugsの回避策を理解するのは他の人だけです。

4

2 に答える 2

4

製品ごとに固有のスラッグを生成します。製品テーブルにフィールドを追加し、テーブルから製品を選択するたびに、プライマリ ID から製品を取得する代わりにそのスラッグを使用します。

したがって、関数は次のようになります。

function product($product_slug)
{
    //get product by slug from database
    //load view page
}

さて、config/routes.phpで

$route['your_controller_name/(:any)'] = "your_controller_name/product/$1";
于 2013-03-01T06:25:59.670 に答える
1

これを行う必要があります:

  1. 「my-best-product」を「1」に変換するロジックを設定する
  2. 「prod_id」コントローラを呼び出して URI 変数を渡す CI でルーティングを設定します
于 2013-03-01T04:00:52.937 に答える