Как Правильно Работать С Конструктором Форм Cform

Здравствуйте!

Возникла следующая проблема: по инструкции http://www.yiiframework.ru/doc/guide/ru/form.builder пытаюсь создать форму при помощи конструктора CForm. Создал действие в контроллере:

public function actionCall()

{

$model= new CallForm;


$form = new CForm('application.views.client.callForm', $model);


$form->validate();


$this->render('call', array('form'=>$form,));

}

Создал представление call.php:

<div class="form">

<?php echo $form; ?>

</div>

И callForm.php:

return array(

'title'=&gt;'Заполните форму',





'elements'=&gt;array(


    'family'=&gt;array(


        'type'=&gt;'text',


        'maxlength'=&gt;32,


    ),


),





'buttons'=&gt;array(


    'login'=&gt;array(


        'type'=&gt;'submit',


        'label'=&gt;'Записать',


    ),


),

);

Но на странице отобразились теги fieldset, объединяющий legend с заголовком “Заполните форму” и кнопку “Записать”. Поля ввода из массива ‘elements’ не выводятся. В чем может быть причина, куда копать?

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

P.S.

Только начинаю изучать Yii.

Я бы не советовал использовать FormBuilder, какое-то у меня предубеждение к нему, может я ошибаюсь, но нестандартные вставки в формы, с его помощью не сделать.

Взамен рекомендую сгенерировать по таблице модель в Gii, и по этой модели снерировать CRUD controller там же. И изучить полученный код, что бы понять принцип. Вот там на гибкость никаких ограничений нет.

Я хотел его использовать что бы быстрей создавать формы, не рисуя каждое поле через CHtml. Когда 1 форма и в ней до 5 полей, это много времени не отнимает, но когда необходимо создать штук 6 различных форм, при этом в каждой порядка 15-20 полей, то на это уже приличное количество времени уйдет. Спасибо, попробую через Gii создать модель и CRUD для таблицы из БД и погляжу как они устроены, а то может будет проще рисовать через CHtml, но зачем тогда нужен конструктор форм CForm.

И все же почему он не выводит поля ввода, которые переданы в массиве elements ?

Почему не выводит, я не могу ответить, потому что как-то не пришлось с ним работать. Может кто то другой сможет нас просветить.

А написание различных форм с помощью CHtml и CActiveForm, это весьма и весьма просто, к тому же для этого есть хороший генератор, после него есть что поправить, но основную рутину он устраняет.

Вы имеете ввиду генератор встроенный в Gii: Form Generator?

Не, вообще-то встроенный в Gii CRUD-generator, просто потому что пользуюсь им чаще, когда нужен редактор для какой-то таблицы. Он требует для работы ActiveRecord модель, и генерирует не только представление, но и контроллер.

Form generator в общем-то весьма похож, но генерирует только представление, к тому же может работать на основании объекта класса CFormModel, если это о чем-то вам говорит.

Может будет проще, если вы опишите свою задачу? Что за форма, какая модель?

Форма и модель описаны в первом посте, не стал на нем зацикливаться (я про CForm), принаровился к генераторам из Gii. Генерирую каркас, после этого немного редактирую модель и представление. Всеже получается быстрее чем вручную бы делал, да и изменения вносить не составляет сложности.

Спасибо что откликнулись.

Внутри класса CallForm вам надо описать ваши параметры, согласно оформлению модели. Тобишь нужно их объявить и описать в методе attributesLabels().

public function attributeLabels()

{

return array(


	'username'=&gt;'Имя',


	'password'=&gt;'пароль',


	... 


	все параметры из массива application.views.client.callForm


);

}

Иначе задумайтесь - зачем вы используете класс, который не используете? Не просто так он там =)

http://www.yiiframework.com/doc/guide/1.1/ru/form.builder