我在模型jobs
中有2个属性,它们是tag
和category
,我想创建一个下拉列表,显示tag
的值,category
等于'工资',这是我的代码:
$s= CHtml::listData($model2, 'salary', 'tag');
echo CHtml::dropDownList('salary', 'salary', $s);
db:
标签/类别
1/val1
2/val1
a/val2
1000/工资
2000/工资
但是我得到了一个dropDownList,其中只包含具有这些条件的最后一个值。我的代码有什么问题?
有两个原因,你只能得到一个结果,首先,你在$model2
中得到的结果数量会影响结果,检查你是否使用findAll
返回匹配条件的所有行,而不是find
和findByPk
,因为它们只返回一个值,
其次,listData的第二个属性应该是你的值字段,'salary'不是模型的属性,它必须是valueField(见此)。
如果它被分配为salary
-所有选项元素的常量值,它将保持不变,这意味着您的数组将在每次到达时被覆盖,留下一个包含最后一个值的元素数组。
你应该'tag_id'/'id'或某种主键从你的模型或标签值(假设它是唯一的)来识别标签
$model2 = MyModel::model()->findAll("category = salary");
$s= CHtml::listData($model2, 'tag', 'tag');
echo CHtml::dropDownList('salary', 'salary', $s,array('empty'=>'--Select--'));