Вы можете сделать это двумя разными способами, как я вижу.Давайте создадим модуль с именем mycustomvalidation.module (не забудьте также создать файл mycustomvalidation.info ).
Примечание: Код ниже имеетне был проверен, поэтому вам, возможно, придется внести некоторые незначительные корректировки.Кстати, это код Drupal 6.x.
1) Использование hook_user()
Вам нужен пользовательский модуль, содержащий собственную реализацию hook_user()
http://api.drupal.org/api/function/hook_user/6.
<?php
function mycustomvalidation_user($op, &$edit, &$account, $category = NULL) {
if ($op == 'validate') {
// Checking for an empty 'profile_fullname' field here, but you should adjust it to your needs.
if ($edit['profile_fullname'] != '') {
form_set_error('profile_fullname', t("Field 'Fullname' must not be empty."));
}
}
}
?>
2) Используя form_alter()
и пользовательскую функцию проверки
Лично я бы выбрал эту опцию, потому что я считаю ее более чистой и более "правильной".Мы добавляем пользовательскую функцию проверки в поле нашего профиля здесь.
<?php
function mycustomvalidation_form_alter(&$form, $form_state, $form_id) {
// Check if we are loading 'user_register' or 'user_edit' forms.
if ($form_id == 'user_register' || $form_id == 'user_edit') {
// Add a custom validation function to the element.
$form['User information']['profile_fullname']['#element_validate'] = array('mycustomvalidation_profile_fullname_validate');
}
}
function mycustomvalidation_profile_fullname_validate($field) {
// Checking for an empty 'profile_fullname' field here, but you should adjust it to your needs.
if ($field['#value'] != '') {
form_set_error('profile_fullname', t("Field %title must not be empty.", array('%title' => $field['#title']));
}
}
?>