Общее описание
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 реализован с применением паттернам Observer. Он может генерировать и принимать подписку на следующие события ( в скобках указаны методы для подписки на события):
onBefore - при активации команды. Генерируется в любом случае.
onShow - когда форма была отображена в первый раз (то есть не была отправлена).
onBeforeValidate - когда форма была отправлена, генерируется перед валидацией данных.
onValid - когда форма была отправлена и все данные верны.
onNotValid - когда форма была отправлена и данные неверны.
onAfterValidate - когда форма была отправлена, генерируется после валидации вне зависимости от результатов валидации.
onAfter - в конце работы формы. Генерируется в любом случае.
Например, если форма была отправлена и все данные верны, то последовательно будут активизированы следующие подписчики: onBefore, onBeforeValidate, onValid, onAfterValidate, onAfter. Если формы была отображена в первый раз - то onBefore, onShow, onAfter.
Для подписки на эти события используются соответствующие методы:
registerOnBeforeCallback()
registerOnShowCallback()
registerOnBeforeValidateCallback()
registerOnValidCallback()
registerOnNotValidCallback()
registerOnAfterValidateCallback()
registerOnAfterCallback()
lmbFormCommand содержит набор методов, которые дочерние классы могут расширяеть:
_onBefore()
_onShow()
_onBeforeValidate()
_onValid()
_onError()
_onAfterValidate()
_onAfter()
Эти методы вызываются до момента оповещения случателей на соответствующие события.