0

私はカテゴリと呼ばれるテーブルを持っています:

  • ID
  • 種別名
  • 親ID

および表 Products:

  • ID
  • カテゴリ ID
  • 商品名

シンプルにするために、product_name と catogory_name は一意の URL エイリアスです

そして、そこのようなURLを作りたい

shop/computer_parts/cpu/intel - 親 cpu とコンピューターを持つ「intel」カテゴリの URL です。

そして、次のような製品

shop/computer_parts/cpu/intel/intel_core_i5_2500k - 製品です

私は解決策を見て、次のようなモデルメソッドを追加します

カテゴリーモデル

public function geturl() {
    ***in cycle getting aliases of all parents***
    return Yii::app()->createUrl( ...etc
}

と製品

public function geturl() {
    *** getting aliases of category and parents ***
    return Yii::app()->createUrl( ...etc
}

これをもっと簡単にする方法はありますか?

4

1 に答える 1

0

まず、メイン設定 ( protected/config/main.php )で urlFormat を path に、 showScriptName を false に設定します。

'urlManager'=>array(
    'urlFormat'         =>  'path',
    'showScriptName'    =>  false,
    'rules'=>array( 
        ...

次に、 config で URL のルールを次のように設定する必要があります。

shop/<parent:.+>/<child:.+>/<category:.+>/<product:.+>    => 'product/view',
shop/<parent:.+>/<child:.+>/<category:.+>/                => 'product/index',

これは、これら 2 つの URL を product/view と product/index にポイントします (明らかに、これは、これらのそれぞれを処理するために必要なコントローラー/アクションに変更されます)。URL からすべての GET 変数にアクセスできるようになりました。たとえば、次のようになります。

$product = $_GET['product'];

URL構造で現在どのレベルにあるかを識別し、それに応じて処理するために、コントローラー/アクションを作成する必要があります。

于 2012-12-02T16:43:01.123 に答える