在我的视图 - > 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。
请咨询!
答案 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作为动作。