заметки на полях

Блокнот разработчика

onPHP 1.1 удобные формы

Наконец-то формы стали более дружелюбны к разработчика. Убрали широко используемые до этого addRule() вместо них теперь можно добавлять свои ошибки на поля формы в дополнение к стандартным отсутствие/неверное значение.
Еще из приятных вещей, что можно получить ошибку для конкретного поля, не придумывая для этого замысловатые конструкции (не все же ведь ошибки выводят скопом, некоторые и около полей); появились еще и описания ошибок – дополнительные поля, которые можно использовать (а можно и не использовать) по своему усмотрению.
У PrimitiveList больше нет методов setDefaultAction() и getActualValue – надо просто установить значение setValue(), и оно и будет дефолтным в случае чего, при получении через getChoiceValue().

Небольшой примерчик:

const ACTION_REGISTRATION = 'reg';
const ERROR_LOGIN_USED = 3; // 1 и 2 - стандартные ошибки

...

$form = Form::create()->
        add(
                Primitive::string('login')->
                setAllowedPattern('/^.{4,}$/is')
        )->
        add(
                Primitive::choice('action')->
                setList($actionList)->
                // значение по умолчанию
                setValue(self::ACTION_REGISTRATION)
        );

$form->import($request->getGet())->importMore($request->getPost());
...
// Здесь мы узнаем что такая учетка уже есть
$form->markCustom('login', self::ERROR_LOGIN_USED);

И теперь в шаблоне зададим значения для 3х ошибок (можно еще и описания)

<?
$form->addWrongLabel('login', 'Логин указан неверно');
$form->addCustomLabel('login', BasePrimitive::MISSING, 'Логин не указан');
$form->addCustomLabel('login', UserRegistration::ERROR_LOGIN_USED, 'Логин уже зарегистрирован');
// Можно дополнительно задать описание для ошибки
$form->addErrorDescription('login', UserRegistration::ERROR_LOGIN_USED, 'Выберите другой логин');
// Выводить можно по старинке
foreach($form->getTextualErrors() as $err) {
    ?><p><?=$err?></p><?
}
// А можно рядом с необходимым полем:
?>
<p><?=$form->getTextualErrorFor('login')?></p>
<p class="description"><?=$form->getErrorDescriptionFor('login')?></p>

Tags:

2 Responses to “onPHP 1.1 удобные формы”

  1. Sugrob Says:

    Пожалуй вставлю свои пять копеек и скажу, что кастомные ошибки были еще в версии 1.0.9. Может и раньше, так далеко уже не заглядывал )))

  2. StalkerXey Says:

    Помню кастомные ошибки еще с лета 2008-го года…

Leave a Reply