将网址内容更改为yii中的另一个控制器

时间:2011-09-14 10:02:18

标签: yii

在我的视图 - > category-> index.php中,我显示了类别表中的类别名称。然后 通过cat_id的$ _get ['id'],我显示了特定类别ID的产品名称。

以下是代码:

$por=product::model()->findAllByAttributes(array('cat_id'=>$_GET['cat_id']));
$list = CHtml::listData($por,'pd_id','product_name');
foreach($list as $value)
echo CHtml::link(CHtml::encode($value),
                 array('showproduct',
                'id'=>$data->pd_id));

例如,如果我们在category表中:

cat_id = 1, cat_name = "nokia"

并在product表中:

product_id = 1, cat_id = 1, product_name = "N72"
product_id = 2, cat_id = 1, product_name = "N73"

然后我可以动态显示两个产品名称。

我的疑问是,如何显示功能(来自功能表, 通过单击N72,功能表具有N72的类别和产品ID作为外键。 以及如何应用chtml链接和写入操作以在同一视图中执行此操作 - > category-> index.php。

请咨询!

1 个答案:

答案 0 :(得分:0)

在产品型号中创建新关系:

public function relations() {
    ...
    'features' => array(self::HAS_MANY, 'Features', 'product_id')
}

现在您可以使用$ por->功能来获取产品的所有功能,但您必须将代码从过程/数组更改为更多操作。

$products = Product::model()->findAllByAttributes(array('cat_id'=>$_GET['cat_id']));
foreach($products as $product) {
    echo CHtml::link(CHtml::encode($product->product_name),
                 array('showproduct',
                'id'=>$product->pd_id));
    foreach ($product->features as $feature)
        echo CHtml::link(CHtml::encode($feature->feature_name),
                 array('features/showfeature',
                'id'=>$feature->ft_id))."\n";
}

这里我不知道你的功能表结构,所以我把类似的产品列名称。另外我不知道你想要链接指向的其他控制器,所以我把'feature / showfeature'作为FeatureController和actionShowFeature作为动作。