Здравствуйте!
Возникла следующая проблема: по инструкции http://www.yiiframew...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'=>'Заполните форму',
'elements'=>array(
'family'=>array(
'type'=>'text',
'maxlength'=>32,
),
),
'buttons'=>array(
'login'=>array(
'type'=>'submit',
'label'=>'Записать',
),
),
);
Но на странице отобразились теги fieldset, объединяющий legend с заголовком "Заполните форму" и кнопку "Записать". Поля ввода из массива 'elements' не выводятся. В чем может быть причина, куда копать?
Зарание спасибо.
P.S.
Только начинаю изучать Yii.
Page 1 of 1
Как Правильно Работать С Конструктором Форм Cform
#2
Posted 14 November 2012 - 02:25 AM
Я бы не советовал использовать FormBuilder, какое-то у меня предубеждение к нему, может я ошибаюсь, но нестандартные вставки в формы, с его помощью не сделать.
Взамен рекомендую сгенерировать по таблице модель в Gii, и по этой модели снерировать CRUD controller там же. И изучить полученный код, что бы понять принцип. Вот там на гибкость никаких ограничений нет.
Взамен рекомендую сгенерировать по таблице модель в Gii, и по этой модели снерировать CRUD controller там же. И изучить полученный код, что бы понять принцип. Вот там на гибкость никаких ограничений нет.
#3
Posted 14 November 2012 - 11:09 AM
Я хотел его использовать что бы быстрей создавать формы, не рисуя каждое поле через CHtml. Когда 1 форма и в ней до 5 полей, это много времени не отнимает, но когда необходимо создать штук 6 различных форм, при этом в каждой порядка 15-20 полей, то на это уже приличное количество времени уйдет. Спасибо, попробую через Gii создать модель и CRUD для таблицы из БД и погляжу как они устроены, а то может будет проще рисовать через CHtml, но зачем тогда нужен конструктор форм CForm.
И все же почему он не выводит поля ввода, которые переданы в массиве elements ?
И все же почему он не выводит поля ввода, которые переданы в массиве elements ?
#4
Posted 14 November 2012 - 12:13 PM
Почему не выводит, я не могу ответить, потому что как-то не пришлось с ним работать. Может кто то другой сможет нас просветить.
А написание различных форм с помощью CHtml и CActiveForm, это весьма и весьма просто, к тому же для этого есть хороший генератор, после него есть что поправить, но основную рутину он устраняет.
А написание различных форм с помощью CHtml и CActiveForm, это весьма и весьма просто, к тому же для этого есть хороший генератор, после него есть что поправить, но основную рутину он устраняет.
#5
Posted 14 November 2012 - 12:47 PM
Charger, on 14 November 2012 - 12:13 PM, said:
А написание различных форм с помощью CHtml и CActiveForm, это весьма и весьма просто, к тому же для этого есть хороший генератор, после него есть что поправить, но основную рутину он устраняет.
Вы имеете ввиду генератор встроенный в Gii: Form Generator?
#6
Posted 14 November 2012 - 02:15 PM
Не, вообще-то встроенный в Gii CRUD-generator, просто потому что пользуюсь им чаще, когда нужен редактор для какой-то таблицы. Он требует для работы ActiveRecord модель, и генерирует не только представление, но и контроллер.
Form generator в общем-то весьма похож, но генерирует только представление, к тому же может работать на основании объекта класса CFormModel, если это о чем-то вам говорит.
Может будет проще, если вы опишите свою задачу? Что за форма, какая модель?
Form generator в общем-то весьма похож, но генерирует только представление, к тому же может работать на основании объекта класса CFormModel, если это о чем-то вам говорит.
Может будет проще, если вы опишите свою задачу? Что за форма, какая модель?
#7
Posted 18 November 2012 - 07:13 AM
Форма и модель описаны в первом посте, не стал на нем зацикливаться (я про CForm), принаровился к генераторам из Gii. Генерирую каркас, после этого немного редактирую модель и представление. Всеже получается быстрее чем вручную бы делал, да и изменения вносить не составляет сложности.
Спасибо что откликнулись.
Спасибо что откликнулись.
#8
Posted 05 April 2013 - 07:15 AM
Georgy90, on 13 November 2012 - 04:31 PM, said:
$model= new CallForm;
$form = new CForm('application.views.client.callForm', $model);
Внутри класса CallForm вам надо описать ваши параметры, согласно оформлению модели. Тобишь нужно их объявить и описать в методе attributesLabels().
public function attributeLabels()
{
return array(
'username'=>'Имя',
'password'=>'пароль',
...
все параметры из массива application.views.client.callForm
);
}
Иначе задумайтесь - зачем вы используете класс, который не используете? Не просто так он там =)
http://www.yiiframew...ru/form.builder
Share this topic:
Page 1 of 1

Help












