Yii Cactive формы
Привет, я хочу создать контактную форму в виде YII. я использую CACtive
формы, но проблема в том, что требуется модель, у меня нет модели, я просто вызываю представление без какой-либо модели. ниже мой код
$form = $this->beginWidget('CActiveForm', array(
'id'=>'fundraising-form',
'enableAjaxValidation'=>false,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'hideErrorMessage'=>true,
),
'enableClientValidation'=>true,
'focus'=>array($model,'name'),
));
echo $form->labelEx('name_of_organization');
выдает ошибку "Отсутствует аргумент 2" для CActiveForm::labelEx(),
1 ответ
Ну, если я правильно угадаю, у вас нет таблицы для хранения ваших данных и вам не нужно никакого взаимодействия между вашей моделью и базой данных, и вы просто хотите использовать ActiveForm
Особенности без модели. Это невозможно Но есть выход для решения этой проблемы. Вы можете легко создать поддельную модель и использовать ее в своем ActiveForm
,
Во-первых, создайте модель в каталоге моделей, но НЕ ОБЫЧНУЮ МОДЕЛЬ. Как ниже:
class FakeModel extends CFormModel{
public $organizationName; //for example!
public $fullname; // for example!!
public $email; // for example!!!
public function rules() {
return array(
array('email','email'),
array('fullname,organizationName','required')
);
}
public function attributeLabels() {
return array(
'email'=>'E-Mail Address',
'organizationName'=>'Organization Name',
'fullname'=>'Full Name',
);
}
}
Обратите внимание, что, FakeModel
продлил CFormModel
учебный класс.
Хм, теперь у вас есть модель, как и другие AR
Модели:) Вы можете отправить эту модель в свою ActiveForm, даже выполнить проверку в вашей модели.
$fakeModel=new FakeModel();
//for validation
if($fakeModel->validate()){
// SEND EMAIL FOR EXAMPLE
}
Как вы можете видеть, между вашим ActiveForm
и база данных. Легко передать $fakeModel
как model
(второй параметр) в вашем CActiveForm
,
ОБНОВЛЕНИЕ Как вы, наверное, знаете, настоящее имя CFormModel.
Я надеюсь, что это поможет:)