0

我有一个名为类别的表:

  • ID
  • 分类名称
  • parent_id

和表产品:

  • ID
  • 类别ID
  • 产品名称

为了简单起见,product_name 和 catogory_name 是唯一的 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',

这将这两个 URL 指向产品/视图和产品/索引(显然这将更改为您必须处理的任何控制器/操作)。您现在可以从 URL 访问所有 GET 变量,例如:

$product = $_GET['product'];

您必须编写控制器/动作来确定您当前在 URL 结构中的级别并相应地处理它。

于 2012-12-02T16:43:01.123 回答