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.'); } } }