Как это дело работает на примере простой формы:
include 'form_validator/FormValidator.class.php'; $FormValidator = new FormValidator( 'POST' ); // Имя $FormValidator->AddElement( 'name' ); $FormValidator->AddRule( 'name', 'Поле "Nimi" должно быть заполнено!', 'required' ); $FormValidator->ApplyFilter( 'name', 'trim' ); // Полученное значение будет пропущено через ф-цию trim // Фамилия $FormValidator->AddElement( 'lastname' ); $FormValidator->AddRule( 'lastname', 'Поле "Perekonnanimi" должно быть заполнено!', 'required' ); $FormValidator->ApplyFilter( 'lastname', 'trim' ); // Телефон $FormValidator->AddElement( 'phone' ); $FormValidator->AddRule( 'phone', 'Поле "Mobiil" должно быть заполнено!', 'required' ); $FormValidator->ApplyFilter( 'phone', 'trim' ); // E-mail $FormValidator->AddElement( 'email' ); $FormValidator->AddRule( 'email', 'Поле "E-mail" должно быть заполнено!', 'required' ); $FormValidator->AddRule( 'email', 'Неверный формат E-mail адреса!', 'email' ); $FormValidator->ApplyFilter( 'email', 'trim' ); // Комментарий $FormValidator->AddElement( 'comment' ); $FormValidator->ApplyFilter( 'comment', 'trim' ); // Если форма была отправлена if ( $FormValidator->HasPosted() ) { // Если форма не содержала ошибок if ( $FormValidator->Validate() ) { } else { // Вывести ошибки //print_r( $FormValidator->messages ); } }
Пример самой формы
<form method="post"> <?php if ( ! $FormValidator->Validated() ) : ?> <h1>Ошибки</h1> <?php foreach ( $FormValidator->messages as $element => $messages ) { foreach ( $messages as $message ) { echo '<font color="#FF5C1E">*' . $message . '</font><br>'; } } ?> <?php endif; ?> <!-- Если была ошибка в поле, оно подсветится другим стилем. Название метода выбрано не лучшим образом :( ShowVar --> <span class="<?=$FormValidator->ShowVar( 'name', 'style75', 'style76' )?>">Nimi:</span> <input name="name" value="<?=$FormValidator->Show('name')?>" type="text"> <!-- аналогично и для остальных полей формы --> <input type="submit"> </form>
Я использовал эту наработку пока что в одном проекте пару месяцев назад. Делалось на скорую руку, по этому она довольно сырая (багов нет, но может некоторые вещи не до конца продуманы и названия методов не везде означают то, как они называются). Хочется доработать, но всё руки не доходят, нет подходящих заказов
Сделано на PHP4, чтобы работало везде, так я пишу только на PHP5.
Прикрепленные файлы
Сообщение изменено: Setor (02 июля 2007 - 11:42 )