Содержание
lmbFormCommand
Общее описание
lmbFormCommand используется в качестве базового класса для команд, которые работают с формами. lmbFormCommand наследуется от lmbActionCommand.
lmbFormCommand в конструкторе принимает:
- название шаблона, который содержит форму,
- название (идентификатор) формы,
- валидатор, который используется для проверки данных, пришедших с формы (см. Валидация)
$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()
Эти методы вызываются до момента оповещения случателей на соответствующие события.

Обсуждение