Страница 1 из 1

Не работает список.

Добавлено: 2012.06.15, 10:00
VituSkz
Всем привет. пытался сделать список с выводом из БД. вроде сделал все верно, но вышла ошибка. потом попробовал просто вывести массив:

Код: Выделить всё

<?php echo CHtml::dropDownList($model,'brand',array(1=>'1', 2=>'2')); ?>
но даже так выводит следующую ошибку:
Recoverable error

Object of class SearchForm could not be converted to string
в чем ошибка и как ее лечить ? !

Re: Не работает список.

Добавлено: 2012.06.15, 11:25
anton44eg
для вывода из БД используется activeDropDownList

Re: Не работает список.

Добавлено: 2012.06.15, 12:25
aser
скорее всего вы массив объектов пытаетесь передать, используйте

Код: Выделить всё

CHtml::listData(array_object,field_name,field_value) 

Код: Выделить всё

<?php echo CHtml::dropDownList($model,'brand',CHtml::listData(Page::findAllPage(),'id','title')); ?>

Re: Не работает список.

Добавлено: 2012.06.15, 13:19
VituSkz
я делал по примеру блога, который лежит в папке demos и там такая конструкция отлично работает

Код: Выделить всё

<?php echo CHtml::dropDownList($model,'brand',array(1=>'1', 2=>'2')); ?>
aser писал(а):скорее всего вы массив объектов пытаетесь передать, используйте
где в данном случае(пример выше) я передаю массив объектов ?

мне бы разобраться в этом примере, где именно ошибка...

Re: Не работает список.

Добавлено: 2012.06.15, 13:28
slavcodev
VituSkz писал(а):мне бы разобраться в этом примере, где именно ошибка...
Тебе вторым постом ответили. Почувствуй разницу:
public static string dropDownList(string $name, string $select, array $data, array $htmlOptions=array ( ))
public static string activeDropDownList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))

Re: Не работает список.

Добавлено: 2012.06.15, 14:15
VituSkz
не почувствовал разницы..

>>для вывода из БД используется activeDropDownList

мне не надо для БД. мне надо просто массив вывести без БД хотя бы.

Re: Не работает список.

Добавлено: 2012.06.15, 14:51
slavcodev
VituSkz писал(а):не почувствовал разницы..
1) Если нужен просто список, не привязанный к модели используется dropDownList
пример:

Код: Выделить всё

 // $myDropdownName - имя поля формы, $value - выбраное значение, $items - массив пунктов
echo CHtml::dropDownList($myDropdownName, $value, $items) 
получим
<select name="my_dropdown_list">
<option value="option1">Пункт 1</option>
<option value="option2">Пункт 2</option>
</select>
2) Если нужен список, привязанный к модели используется activeDropDownList
пример:

Код: Выделить всё

 // $model - модель, $attribute - атрибут модели, $items - массив пунктов
echo CHtml::activeDropDownList($model, $attribute, $items)
получим примерно такое
<select name="Model[attribute]">
<option value="option1">Пункт 1</option>
<option value="option2">Пункт 2</option>
</select>
$items - массив пунктов, например array(0 => 'Пункт 1', 2 => 'Пункт 2',)
так же его можно этот массив получить из таблицы используя модель

Код: Выделить всё

// собираем модели
$models = Users::model()->findAll();
// генерируем массив для списка
$items = CHtml::listData($models, 'id', 'login');
мне казалось что тут все очевидно (

Re: Не работает список.

Добавлено: 2012.06.16, 10:40
VituSkz
спасибо. с этим разобрался. а как сделать, чтобы объекты не переносились на новую строку? например вот такая конструкция:

Код: Выделить всё

<div class="row">
<?php echo CHtml::activeCheckBox($model,'myTovar'); ?>
<?php echo CHtml::activeLabel($model,'myTovar'); ?>
</div>
и все идет с новой строки