从相关表创建下拉列表yii

时间:2013-07-06 06:24:12

标签: php activerecord yii yii2

我有两个表: product product_type (与模型相关的产品和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在下拉字段中显示所有product_type名称的列表。我在 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);
?>

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

我该怎么做?

3 个答案:

答案 0 :(得分: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);
        ?>

答案 1 :(得分:1)

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) 
     ?>

答案 2 :(得分:-2)

像bellow

一样更改您的代码
    <?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);
    ?>