2

我有两个表:productproduct_type(分别与模型相关 Product 和 Product_type):

product : product_id, product_type_id, name, etc...
product_type : product_type_id, name, desc, etc...

两者都与键“product_type_id”相关。

我已经使用 gii crud 生成器为两个表创建了 crud。现在在产品表单页面上,我想使用 Yii ActiveRecord 在下拉字段中显示所有产品类型名称的列表。我在views/product/_form.php脚本中添加了这一行:

<?php
    $list = CHtml::listData(ProductType::model()->findAll(array('order' => 'product_type_name')), 'id', 'id');
    echo $form->dropDownList($model, 'product_type_id', $list);
?>

但它显示空白下拉字段:(

我怎样才能做到这一点?

4

3 回答 3

6

解决了我的自我:)

只需提供 product_type_name。

<?php
        $list = CHtml::listData(ProductType::model()->findAll(array('order' => 'product_type_name')), 'product_type_id', 'product_type_name');
        echo $form->dropDownList($model, 'product_type_id', $list);
        ?>
于 2013-07-06T07:18:09.323 回答
4

Yii2中,类CHtml不再存在。

以下是基于以下假设的解决方案:

  • 使用Yii2框架;
  • product_type与模型Product_type相关联;
  • product_type表有一个名为“ type-name ”的字段。


     <?php
         // get all product types from the corresponding table:
         $productTypes = Product_type::find()->orderBy('type-name')->asArray()->all(); 
         // create an array of pairs ('id', 'type-name'):
         $productTypeList = ArrayHelper::map($productTypes, 'id', 'type-name'); 
         // finally create the drop-down list:
         $form->field($model, 'product_type_id')->dropDownList($productTypeList) 
     ?>
于 2016-06-10T10:46:36.237 回答
-2

像下面这样更改您的代码

    <?php
    $list = CHtml::listData(ProductType::model()->findAll(array('order' => 'product_type_name')), 'table_col_name1', 'table_col_name2'); //table_col_name1 is value of option, table_col_name2 is label of option
    // echo $form->dropDownList($model, 'product_type_id', $list);
    echo CHtml::dropDownList('name_of_the_dropdown', $model, $list);
    ?>
于 2013-07-06T07:21:41.267 回答