我有两个表: 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);
?>
但它显示空白下拉字段:(
我该怎么做?
答案 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 类不再存在。
以下是基于以下假设的解决方案:
<?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);
?>