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

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

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

#1 User is offline   Diakon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 26
  • Joined: 27-March 13

Posted 05 July 2013 - 08:28 AM

Добрый день! Есть вопрос. Я в выпадающем списке хочу вывести Фамилию Имя Отчество водителей (в талбице фамилии записаны в столбце 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'=>'Выберите из списка'));

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

#2 User is offline   Charger 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 317
  • Joined: 03-September 11

Posted 05 July 2013 - 08:33 AM

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

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

#3 User is offline   Diakon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 26
  • Joined: 27-March 13

Posted 05 July 2013 - 09:50 AM

я сделал так
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'=>'Выберите из списка'));

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

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

#4 User is offline   Charger 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 317
  • Joined: 03-September 11

Posted 05 July 2013 - 09:59 AM

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

#5 User is offline   Diakon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 26
  • Joined: 27-March 13

Posted 05 July 2013 - 11:07 AM

View PostCharger, on 05 July 2013 - 09:59 AM, said:

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


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

#6 User is offline   Diakon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 26
  • Joined: 27-March 13

Posted 05 July 2013 - 11:23 AM

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'=>'Выберите из списка'));

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

#7 User is offline   Charger 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 317
  • Joined: 03-September 11

Posted 05 July 2013 - 01:13 PM

Quote

а определять в AR метод

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

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

#8 User is offline   ineersa 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 319
  • Joined: 15-April 13
  • Location:Ukraine

Posted 05 July 2013 - 02:22 PM

View PostCharger, on 05 July 2013 - 01:13 PM, said:

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

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

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

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


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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users