Fork me on GitHub

EForm

EForm генератор форм.

Это расширенная версия CForm. Добавлена возможность добавлять четвертый тип элементов. А именно модели со специальным методом CModel::getFormElements(). Это метод должен возвращать массив элементов для формы. Сохранена возможность работы сценариев.

Для деталей по элементам, прочитайте {@link CFormInputElement}.

Пример модели:

class User extends CActiveRecord
{
    public function getFormElements()
    {
        return array(
            'login'=>array('type'=>'text','attributes'=>array('class'=>'login'),'on'=>'insert'),
            'password'=>array('type'=>'text','attributes'=>array('class'=>'password'),'on'=>'insert'),
            'email'=>array('type'=>'text','attributes'=>array('class'=>'email')),
            'desc'=>array('type'=>'textarea','attributes'=>array('class'=>'desc')),
        );
    }
}

Теперь легко создадим форму, пример двух действий из UsersController:

public function actionInsert()
{
    // Создаем форму
    $form=new EForm(array(
        'activeForm'=>array(
            'id'=>'user_form',
            'enableAjaxValidation'=>true,
            'focus'=>'input[type="text"]:first',
            'clientOptions'=>array(
                'validateOnSubmit'=>true,
                'validationDelay'=>1000,
    )));
    // Добавим елементы из моделей
    $form->elements=array(
        new User('insert'),
        new CaptchaModel,
    );
    // Проверяем переданные данные
    if($form->submitted() && $form->validate())
    {
        // сохраняем модели...
    }
   // показываем представление с формой
    $this->render('user_form',array(
        'form'=>$form,
    ));
}
public function actionUpdate()
{
    // Создаем форму
    $form=new EForm(array(
        'activeForm'=>array(
            'id'=>'user_form',
            'enableAjaxValidation'=>true,
            'focus'=>'input[type="text"]:first',
            'clientOptions'=>array(
                'validateOnSubmit'=>true,
                'validationDelay'=>1000,
    )));
    // Добавим елементы из моделей
    $form->elements=array(
        new User('update'),
        new CaptchaModel,
    );
    // Проверяем переданные данные
    if($form->submitted() && $form->validate())
    {
        // сохраняем модели...
    }
   // показываем представление с формой
    $this->render('user_form',array(
        'form'=>$form,
    ));
}

Changelog

0.1

  • Initial public release.

0.2

  • Added support for ajax validation (EFormModelBehavior).
  • Added helper methods submitted, validated, saved (EFormModelBehavior).
  • Added default config if no config specified (EFormModelBehavior).

0.3

  • Added support for the multiple forms with different scenario (EFormModelBehavior).

0.4

  • Fixed default config support for non AR models. (EFormModelBehavior).

0.5

  • Added support for buttons passing in getFormElements

Automated form generator.

Documentation

Downloads (Tags)

Resources