====== lmbFormCommand ====== ===== Общее описание ===== **lmbFormCommand** используется в качестве базового класса для команд, которые работают с формами. lmbFormCommand наследуется от [[lmbActionCommand|lmbActionCommand]]. lmbFormCommand в конструкторе принимает: * название шаблона, который содержит форму, * название (идентификатор) формы, * валидатор, который используется для проверки данных, пришедших с формы (см. [[validation|Валидация]]) $validator = new NewslineValidator(); $template_path = 'news/create.html'; $form = new lmbFormCommand($template_path, 'newsline_form', $validator); lmbFormCommand содержит методы, которые позволяют получить большой спектр информации о форме: * **isSubmitted()** - была ли форма отправлена или нет. Алиас для $this->request->hasPost() * **isValid()** - верны ли данные, которые пришли с формой. Алиас для $this->error_list->isValid() * **getErrorList()** - возвращает объект ErrorList, который содержит список ошибок валидации, если они есть. * **setFormDatasource($datasource)** - передает в активный компонент формы в шаблоне объект $datasource в качестве источника данных. ===== События lmbFormCommand ===== Класс lmbFormCommand реализован с применением паттернам Observer. Он может генерировать и принимать подписку на следующие события ( в скобках указаны методы для подписки на события): * onBefore - при активации команды. Генерируется в любом случае. * onShow - когда форма была отображена в первый раз (то есть не была отправлена). * onBeforeValidate - когда форма была отправлена, генерируется перед валидацией данных. * onValid - когда форма была отправлена и все данные верны. * onNotValid - когда форма была отправлена и данные неверны. * onAfterValidate - когда форма была отправлена, генерируется после валидации вне зависимости от результатов валидации. * onAfter - в конце работы формы. Генерируется в любом случае. Например, если форма была отправлена и все данные верны, то последовательно будут активизированы следующие подписчики: onBefore, onBeforeValidate, onValid, onAfterValidate, onAfter. Если формы была отображена в первый раз - то onBefore, onShow, onAfter. Для подписки на эти события используются соответствующие методы: * registerOnBeforeCallback() * registerOnShowCallback() * registerOnBeforeValidateCallback() * registerOnValidCallback() * registerOnNotValidCallback() * registerOnAfterValidateCallback() * registerOnAfterCallback() ===== Расширение lmbFormCommand ===== lmbFormCommand содержит набор методов, которые дочерние классы могут расширяеть: * _onBefore() * _onShow() * _onBeforeValidate() * _onValid() * _onError() * _onAfterValidate() * _onAfter() Эти методы вызываются до момента оповещения случателей на соответствующие события.