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

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
VituSkz
Сообщения: 4
Зарегистрирован: 2012.06.13, 08:16

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

Сообщение VituSkz »

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

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

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

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

Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

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

Сообщение anton44eg »

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

Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

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

Сообщение aser »

скорее всего вы массив объектов пытаетесь передать, используйте

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

CHtml::listData(array_object,field_name,field_value) 

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

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

VituSkz
Сообщения: 4
Зарегистрирован: 2012.06.13, 08:16

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

Сообщение VituSkz »

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

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

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

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

Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

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

Сообщение 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 ( ))
Жду Yii 3!

VituSkz
Сообщения: 4
Зарегистрирован: 2012.06.13, 08:16

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

Сообщение VituSkz »

не почувствовал разницы..

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

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

Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

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

Сообщение 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');
мне казалось что тут все очевидно (
Жду Yii 3!

VituSkz
Сообщения: 4
Зарегистрирован: 2012.06.13, 08:16

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

Сообщение VituSkz »

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

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

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

Ответить