Как сделать dropDownList в Yii?
У меня есть 2 атрибута в модели jobs
, они есть tag
а также category
Я хочу сделать dropDownList, который отображает значение tag
у кого есть category
равная "зарплата", вот мой код:
$s= CHtml::listData($model2, 'salary', 'tag');
echo CHtml::dropDownList('salary', 'salary', $s);
мой дб:
тег / категория
1 / val1
2 / val1
a / val2
1000 / зарплата
2000 / зарплата
но я получил dropDownList, который содержит только последнее значение, которые имеют эти условия. что не так в моем коде?
1 ответ
Есть две причины, почему вы можете получить только один результат, во-первых, количество результатов, которые вы получаете в $model2
влияет на результаты, проверьте, используете ли вы findAll
вернуть все строки, соответствующие условию, а не find
а также findByPk
поскольку они возвращают только одно значение,
Во-вторых, второй атрибут listData должен быть вашим значением. Поле 'salary' не является атрибутом модели, это должно быть valueField( см. Это).
Он останется таким же, если он назначен как salary
- постоянное значение для всех элементов option, означающее, что ваш массив будет перезаписываться для каждого диапазона, оставляя вам массив из одного элемента, содержащий последнее значение.
Вы должны 'tag_id'/'id' или какой-то первичный ключ из вашей модели или значения тега (при условии, что он уникален), чтобы идентифицировать тег по
$model2 = MyModel::model()->findAll("category = salary");
$s= CHtml::listData($model2, 'tag', 'tag');
echo CHtml::dropDownList('salary', 'salary', $s,array('empty'=>'--Select--'));