Dropdownlist Составные Пункты Выпадающего Меню

Добрый день! Есть вопрос. Я в выпадающем списке хочу вывести Фамилию Имя Отчество водителей (в талбице фамилии записаны в столбце sname, имя - name, отчество - pname).

Я сделала список так:

echo $form->dropDownList($model_shift,"[$i]id_driver",CHtml::listData(Personal::model()->findAll(array(‘order’=>‘sname’, ‘condition’=>‘id_type=1’)), ‘id’, ‘sname’),

array(‘empty’=>‘Выберите из списка’));

Но так в выпадающем списке будут только фамилии, а как добавить чтоб выводились еще имя и отчество?

Заранее спасибо!

почему вы не оформляете код в теги?

Либо формируйте массив вручную, делая цикл по массиву AR, или определите в AR метод “getFullName” который бы возвращал “ФИО” и в CHtml вместо ‘sname’ юзайте ‘fullName’

Но вообще во вьюхах делать запросы к базе идеологически не хорошо, лучше экстрактнуть этот код в статический метод модели.

я сделал так

echo $form->dropDownList($model_shift,"[$i]id_driver",CHtml::listData(Personal::model()->findAll(array(‘select’=>‘CONCAT(name, sname, pname) as sname’, ‘condition’=>‘id_type=1’)), ‘id’, ‘sname’),

array(‘empty’=>‘Выберите из списка’));

но в селекторе на форме в выпадающем списке появилось ФИО тока одного чела (последний в таблице), хотя выполнив этот же запрос в хайдискл вывелись ФИО всех.

Кто может подсказать как быть?

а чем вас не устраивает мой вариант?

Потому что делать ваши предложения кажутся мне черезчур сложными, должен быть смособ проше. Создавать массив со значениями я не хочу, а определять в AR метод… я даж не знаю как это сделать

echo $form->dropDownList($model_shift,"[$i]id_driver",CHtml::listData(Personal::model()->findAll(array(‘select’=>'CONCAT(sname, name, pname) as sname, id’, ‘condition’=>‘id_type=1’)), ‘id’, ‘sname’),

array(‘empty’=>‘Выберите из списка’));

так получилось

имеется в виду создать метод в моделе (ActiveRecord). Ничего сложного.

А то что вы делаете во вьюхе, является плохим запахом.

Согласен на все 100%.

Простейшим выходом было бы создать функцию(геттер) в модели и сформировать массив, так как данные действия в вью нежелательны.

Ну а создание activerecord класса полезно если данных функций у вас не 1-2. Делается это довольно просто. В компонентах создаем класс (например QActiveRecord), обьявляем его как


class QActiveRecord extends CActiveRecord

дописываем нужные функции, и модель обьявляем как


class MyModel extends QActiveRecord

Ничего сложного в этом нет, и это является верным.