Quiero enganchar en el módulo de registro. Ya tengo una base de datos de 50000 usuarios que usar mi antiguo sitio web. Ahora yo soy la migración a Drupal.

Todavía no he migrado las entradas de la base de datos de drupal. Voy a ser comprobar en contra de mi base de datos antigua.

Cuando un usuario intenta registrarse en Drupal, necesito comprobar si el nombre de usuario le dio ya está presente en la lista de 50000 (y creciente) de las entradas. Si existe, necesito cancelar el registro muestra un mensaje de error diciendo usuario existe..

Que el gancho se debe utilizar? Si mi código figuras que el error de validación, ¿Cómo puedo decirle a drupal para mostrar un mensaje de error?

Edit: se me engancha en la hook_user y marcada por el ‘validar’ op. Soy capaz de validar y asignar mensajes de error. Pero lo que está ocurriendo en todas las formas. Quiero validar el formulario de creación de nueva cuenta. ¿Cómo puedo hacer eso?

Gracias.

OriginalEl autor user266803 | 2010-02-15

4 Comentarios

  1. 18

    Usted debe registrar un adicional de validación de la función de devolución de llamada para el formulario de registro utilizando hook_form_FORM_ID_alter(), algo así:

    //Alter the registration form
    function yourModuleName_form_user_register_alter(&$form, &$form_state) {
      //Add your own function to the array of validation callbacks
      $form['#validate'][] = 'yourModuleName_user_register_validate';
    }
    
    //Perform your own validation
    function yourModuleName_user_register_validate($form, &$form_state) {
      //Extract the submitted name
      $name = $form_state['values']['name'];
      //Check it according to your own logic
      $is_valid_name = your_check_for_valid_name();
      //File error, when not valid
      if (!$is_valid) {
        form_set_error('name', t('Name already taken, please choose a different one'));
      }
    }
    +1 muchas Gracias. Funcionó, yo soy capaz de poner la validación de esa forma particular del campo(s). Yo no sabía acerca de la FORM_ID cosa, he utilizado algunas otras gancho y la ejecución de todas formas 😀
    Aunque esta es una gran solución, tenga en cuenta que en la actualidad Drupal ejecuta hook_form_alter DESPUÉS de hook_form_FORM_ID_alter. Así que puede haber un caso en el camino donde otro módulo se anulen su hook_form_FORM_ID_alter cambios. El 95% del tiempo usted no ejecutar en un problema, pero algunos dicen que es más seguro utilizar hook_form_alter y una instrucción switch.
    Si su función de validación es sólo la comprobación de un solo campo, considerar la creación de una Elemento de Validación en lugar de la función.

    OriginalEl autor Henrik Opel

  2. 6

    Henrik Opel respuesta a trabajar en Drupal 6. Para Drupal 7 uso yourModuleName_form_user_register_form_alter

    OriginalEl autor Camilo

  3. 1

    Aquí hay algunos ejemplos para Drupal 7:

    /**
     * Implements of hook_user_insert().
     */
    function foo_user_insert(&$edit, $account, $category) {
      //foo_user_submit($edit, $account);
    }
    
    /**
     * Implementation of hook_user_delete().
     */
    function foo_user_delete($account) {
      //foo_user_delete($account);
    }
    
    /**
     * Implements hook_form_FORM_ID_alter().
     * Form ID: user_register_form
     */
    function foo_form_user_register_form_alter($form, &$form_state) {
      if ($form['#user_category'] == 'account' && !isset($form['#user']->uid)) {
        //Foo code
      }
    }
    
    /**
     * Implements hook_form_FORM_ID_alter().
     * Form ID: user_profile_form
     */
    function foo_form_user_profile_form_alter($form, &$form_state) {
      //Set a custom form validate and submit handlers.
      $form['#validate'][] = 'foo_account_validate';
      $form['#submit'][] = 'foo_account_submit';
    }
    
    /**
     * Implements of hook_form_alter().
     * This is the same as: hook_form_FORM_ID_alter()
     */
    function foo_form_alter(&$form, $form_state, $form_id) {
      switch ($form_id) {
        case "user_profile_form":
        case "user_register_form":
          break;
      }
    }

    OriginalEl autor kenorb

Dejar respuesta

Please enter your comment!
Please enter your name here