2011-09-14 47 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

相關問題