Yii Framework Forum: Вставить Данные Из Другого Модуля - Yii Framework Forum

Jump to content

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

Вставить Данные Из Другого Модуля Rate Topic: -----

#1 User is offline   DeSharky 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 15
  • Joined: 01-April 13

Posted 01 April 2013 - 02:16 PM

Начал изучать Yii, встала такая проблема:
есть 2 таблицы contragents (id,...) и tickets (...,id_contragent,....)
Так вот как мне при создании новой заявки (tickets) внедрить селектбокс из contragents?
Читал http://www.yiiframew...ru/database.arr - вроде не сложно,а начал проводить аналогии со своим проектом - ничего не выходит.
Попробовал написать во вьшку tickets такой код:
$Contragents = Contragents::model()->findAll();
echo CHtml::activedropDownList($model, 'id', $Contragents);
- не работает.
Как правильно написать?
0

#2 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 02 April 2013 - 02:18 AM

View PostDeSharky, on 01 April 2013 - 02:16 PM, said:

$Contragents = Contragents::model()->findAll();
echo CHtml::activedropDownList($model, 'id', $Contragents);


Сделайте так:

echo CHtml::activedropDownList($model, 'id', CHtml::listData(Contragents::model()->findAll(), 'id', 'title'));

0

#3 User is offline   Q-Zma 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 17-August 09
  • Location:Ukraine, Kharkiv

Posted 02 April 2013 - 02:45 AM

View Posttuschkan, on 02 April 2013 - 02:18 AM, said:


Сделайте так:

echo CHtml::activedropDownList($model, 'id', CHtml::listData(Contragents::model()->findAll(), 'id', 'title'));



Не учите человека плохому, данные нужно подготавливать в контроллере.
0

#4 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 02 April 2013 - 03:20 AM

View PostQ-Zma, on 02 April 2013 - 02:45 AM, said:



Не учите человека плохому, данные нужно подготавливать в контроллере[size=2].



Лучше в модели, а в контроллере на худой конец.
Это простейшая выборка и не критично, если она будет в представлении. Не смотря на то, что в MVC BEST practice сказано, что view should avoid containing code that performs explicit DB queries. Such code is better placed in models,

Larry Ulman пишет:

To create a drop-down associated with another Model, you’d replace that code with:

<?php echo $form->dropDownList($model,'departmentId', CHtml::listData(Department::model()->findAll(), 'id', 'name')); ?>


оригинал: http://www.larryullm...w-edits-in-yii/


Вот тут в обсуждении принимают участие qiangxue и mdomba и тут везде в примерах такая выборка используется.
https://github.com/y...ft/yii/pull/722
0

#5 User is offline   DeSharky 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 15
  • Joined: 01-April 13

Posted 02 April 2013 - 11:38 AM

подсказали такой вариант:
$Contragents = Contragents::model()->findAll();
$list = CHtml::listData($Contragents,
'id', 'поле таблицы которое надо выводить');
echo CHtml::activedropDownList($model, 'id', $list);

все гуд, только как тогда выводить несколько полей? к примеру у меня имя и фамилия в разных полях, а вывести нужно оба
0

#6 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 02 April 2013 - 01:09 PM

View PostDeSharky, on 02 April 2013 - 11:38 AM, said:

подсказали такой вариант:
$Contragents = Contragents::model()->findAll();
$list = CHtml::listData($Contragents,
'id', 'поле таблицы которое надо выводить');
echo CHtml::activedropDownList($model, 'id', $list);

все гуд, только как тогда выводить несколько полей? к примеру у меня имя и фамилия в разных полях, а вывести нужно оба


Вы можете создать динамическое свойство. Тут описан как раз ваш случай http://www.yiiframew...et-set-methods/
0

#7 User is offline   DeSharky 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 15
  • Joined: 01-April 13

Posted 02 April 2013 - 02:53 PM

View Posttuschkan, on 02 April 2013 - 01:09 PM, said:

Вы можете создать динамическое свойство. Тут описан как раз ваш случай http://www.yiiframew...et-set-methods/

О,спасибо,получилось!
Теперь при попытке добавить запись пишет "Контрагент cannot be blank."
Направьте в нужное русло пожалуйста
0

#8 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 03 April 2013 - 01:25 AM

View PostDeSharky, on 02 April 2013 - 02:53 PM, said:

Теперь при попытке добавить запись пишет "Контрагент cannot be blank."


Значит это свойство записано в модели в методе rules как required

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			//array('field', 'required'),
...
),
		);
	}

0

#9 User is offline   DeSharky 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 15
  • Joined: 01-April 13

Posted 03 April 2013 - 12:13 PM

не,это понятно,оно и должно быть обязательным,я его заполняю...но приложение считает иначе
0

#10 User is offline   DeSharky 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 15
  • Joined: 01-April 13

Posted 03 April 2013 - 12:48 PM

разобрался,спасибо!
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