Drupal własna walidacja
Załóżmy, że chcemy dodać własną walidację do formularza edycji użytkownika. Musimy w naszym module zaimplementować hook_form_alter. Tutaj za dodatkową walidację będzie odpowiadać funkcja custom_data_validate (nazwa może być dowolna).
function nazwamodulu_form_alter(&$form, $form_state, $form_id)
{
switch ($form_id)
{
case 'user_profile_form':
$form['#validate'][] = 'custom_data_validate';
break;
}
}
Teraz wystarczy napisać funkcję custom_data_validate z logiką walidacji. Na dole przykładowa walidacja jednego pola.
Dodam, że walidacja innych pól zostaje bez zmian (np. pole wymagane).
function custom_data_validate($form, &$form_state)
{
$nr_karty = $form_state['values']['profile_nrkarty'];
$uid = (int)arg(1);
if($nr_karty!='')
{
$sql = 'SELECT uid FROM profile_values WHERE fid=6 AND value='.$nr_karty;
$results = db_query($sql);
$ident = intval(db_result($results));
$txn_user = user_load($ident);
if($txn_user->uid!=0 && $txn_user->uid!=$uid)
{
form_set_error('profile_nrkarty', 'Istnieje już użytkownik o podanym numerze karty.');
}
}
}
