2011-09-14 20 views
0

在我的看法 - > category-> index.php,我显示类别表中的类别名称。然后由cat_id的$ _get ['id'] ,我显示特定类别id的产品名称。更改URL内容到另一个控制器在yii

下面的代码:

$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

创建产品型号的新关系:

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

现在你可以使用$卟>功能来获得该产品的所有功能,但你必须从程序/阵列更改您的代码更接力。

$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"; 
} 

在这里我不知道你特点表结构,所以我把类似的产品列名称。另外我不知道你想要什么其他控制器链接指向,所以我已经把FeatureController和actionShowFeature作为动作放入'features/showfeature'中。

+0

john,ur correct !! .. yii框架在创建和设置外键后生成类别,产品和功能表之间的关系。从移动网站的角​​度来看,如果我点击产品名称,它应该显示相应的功能的产品名称。问问什么是chtml :: link($ value)中的代码; ,你明白亚撒吗? – jayaraj

+0

@jayaraj如果您点击产品名称,您的浏览器会将您发送给其他操作。在该操作中,您必须呈现一个视图,您可以在其中显示所选产品的所有功能。在这种情况下,您不必更改CHtml :: link。在将模型集合($ por)转换为数组($ list)之后,您无法获取功能。如果你仍然想获得功能,你必须使用我上面展示的代码风格。 – Johnatan

+0

好吧,我明白了。我应该专注于这个动作来表达一种观点。感谢你的支持!!!支持地球的存在。 – jayaraj

相关问题