欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

d7 drupal7 hook_form_alter 验证 validate 有大用 有大大用 有大大大用 有大大大大用

function custom_one_form_alter(&$form, &$form_state, $form_id)
{
  if('user_login' == $form_id){
    $form['#submit'][] = 'custom_one_user_login_redirect';
  }

  if('ftp_info_node_form' == $form_id) {
          $form['#validate'][] = 'custom_one_cjdntj_node_form_validate';
   }

  if('cjdntj_node_form' == $form_id) {
/
      $form['#validate'][] = 'custom_one_cjdntj_node_form_validate';
 
//      $form['#redirect'] = array('list_cjdntj');
    }



function custom_one_cjdntj_node_form_validate($form, &$form_state){
    if(!empty($form_state['submit_handlers'][0]) && $form_state['submit_handlers'][0] == 'node_form_delete_submit'){
        return;
    }
    $node_from_form = $form_state['node'];

    $field_wired_mac_value = $form_state['values']['field_wired_mac']['und'][0]['value'];
    $field_wireless_mac = $form_state['values']['field_wireless_mac']['und'][0]['value'];


    //判断无线mac
    $mac = _isMacAddressOrEmtpy($field_wireless_mac);
    if(!$mac){
        form_set_error('field_wireless_mac','无线mac地址错误');
    }else{
        if($mac === true){
            $form_state['values']['field_wireless_mac']['und'][0]['value'] = '';
        }else{
            $sql = "select entity_id from `field_data_field_wireless_mac` where field_wireless_mac_value = :mac  ";
            $entity_id  = db_query($sql, array(':mac' => $mac))->fetchField();
            if(!empty($entity_id) && $node_from_form->nid!=$entity_id){
                form_set_error('field_wireless_mac',$mac.' 无线mac地址已存在');
            }else{
                $form_state['values']['field_wireless_mac']['und'][0]['value'] = $mac;
            }
        }

    }
    //判断有线mac
    $mac = _isMacAddressOrEmtpy($field_wired_mac_value);
    if(!$mac){
        form_set_error('field_wired_mac','有线mac地址错误');
    }else{
        if($mac === true){
            $form_state['values']['field_wired_mac']['und'][0]['value'] = '';
        }else{
            $sql = "select entity_id from `field_data_field_wired_mac` where field_wired_mac_value = :mac  ";
            $entity_id  = db_query($sql, array(':mac' => $mac))->fetchField();
            if(!empty($entity_id) && $node_from_form->nid!=$entity_id){

                form_set_error('field_wired_mac',$mac.' 有线mac地址已存在');
            }else{

                $form_state['values']['field_wired_mac']['und'][0]['value'] = $mac;
            }
        }

    }


    if(empty($form_state['values']['field_user']['und'][0]['target_id'])){
        if(!preg_match('/\d{8}/',$_POST['field_user']['und'])){
            form_set_error('field_user[und]','用户名必须含有工号!');
        }
       $result = _from_ldap_get_user_and_save_user($_POST['field_user']['und']); //$_POST['field_user']['und']就是工号
        if($result['status'] == -1){
            form_set_error('field_user[und]','连接AD异常!');
        }
        else if($result['status'] == -2){
            //$form_state['values']['field_user']['und'][0]['target_id'] = $result['uid'];
            form_set_error('field_user[und]',$_POST['field_user']['und'].' 用户不存在,可能此时需要你输入工号,若工号正确,请到AD里面查看权限!');
        }
        else{ //此时返回用户的uid
            $form_state['values']['field_user']['und'][0]['target_id'] = $result['uid'];
        }
    }
}


普通分类: