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.

Я надеюсь, что это поможет:)

Другие вопросы по тегам