Пример валидации поля profile_phone
созданного в профиле с помощью модуля Profile:
/**
* Implements hook_form_alter().
*/
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_profile_form' || $form_id == 'user_register') {
$form['#validate'][] = 'mymodule_phone_validate';
}
}
/**
* Phone validate callback.
*/
function mymodule_phone_validate($form, $form_state) {
if (isset($form_state['values']['profile_phone']) && !preg_match('#\d{4}-\d{3}-\d{3}#', $form_state['values']['profile_phone'])) {
form_set_error('profile_phone', 'Поле Телефон заполнено неверно. Пример правильного заполнения: 8908-546-789');
}
}
Написанное актуально для
Drupal 6
Похожие записи
- Расширить существующий виджет своим функционалом
- Добавить виджет поля заказа в существующий checkout pane
- Модуль Geofield Yandex Maps — ввод и вывод гео-информации на Яндекс.Картах 2.1
- Дополнительные поля в форме оформления заказа Drupal Commerce
- Модуль References dialog — расширение возможностей виджета у полей типа entity reference
Комментарии
А можно также переопределить валидацию логина при регистрации в D7, чтобы запрещены были кириллистические логины?
можно
form_set_error() оставляет юзера на форме, с ообщением об ошибке.
А как программно изменить/скорректировать значение ошибочного поля?
$form_state же не по ссылке передается. Да и пробовал я менять на
function mymodule_phone_validate($form, &$form_state) { ...
и потом менять значение
$form_state['values']['profile_phone'] = 'new_value';
но в форме отображается старое значение
по ссылке.
Ок, по ссылке. Ну а каккие поля менять, чтобы они изменились в форме?
В общем вот рабочий код
@seoDemon, form_set_value
Добавить комментарий