Ocultar o deshabilitar el campo después del registro

8

Tengo 1 campo en la página de registro de usuario que no se debe cambiar después del registro de la cuenta. Necesita estar oculto o deshabilitado. ¿Qué módulo puede hacer esto?

Azz Kawa
fuente
relacionado: drupal.org/node/374416
Mołot

Respuestas:

4

Puedes probar el Módulo de permisos de campo

Caracteristicas

  • Habilite los permisos de campo en cualquier entidad, no solo en los nodos.
  • Permisos de campo basados ​​en roles que permiten una visualización diferente según el acceso del usuario.
  • Los permisos a nivel de autor permiten ver y editar campos en función de quién es el propietario de la entidad.
  • Los permisos para cada campo no están habilitados de forma predeterminada. En cambio, los administradores pueden habilitar estos permisos explícitamente para los campos donde se necesita esta característica.
Bipin K
fuente
¿Cómo puede diferenciar entre la creación y edición de usuarios cuando es el mismo campo? No digo que no pueda, realmente me gustaría saber cómo. Y supongo que OP también lo haría.
Mołot
Será un permiso de campo basado en roles, debe otorgar permiso solo para anónimos (no estoy seguro de que esta condición funcione para el caso).
Bipin K
8

Si quieres hacerlo en módulo personalizado

my_module_form_user_profile_form_alter(&$form, &$form_state) {
  // Since it is on registration form, field might be reqruied.
  $form['your_field']['#required'] = FALSE;
  $form['your_field']['#access'] = FALSE;
}
arpitr
fuente
¿Cómo puede diferenciar entre la creación y edición de usuarios?
DRUPWAY
2
@Smalution No tiene que hacerlo; para el formulario de registro sería my_module_form_user_register_form_alter, no my_module_form_user_profile_form_alter.
Mołot
1
hook es hook_form_FORM_ID_alter FORM_ID para el registro y la edición es diferente
arpitr
Ok lo tengo. He comprobado cuándo el usuario registra su id. De formulario "user-register-form" y cuando el usuario edita su id. De formulario "user-profile-form" normalmente.
DRUPWAY
Sí, como se esperaba :)
arpitr
1

Prueba con este código:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }
Adi
fuente
2
Por favor agregue algunas palabras de descripción.
Mołot
$ form ['field_name'] ['# disabled'] = VERDADERO; También funciona.
pinueve
1

Haga la propiedad de visibilidad de campo solo para usuarios anónimos. Por lo tanto, el valor se almacenará en el momento del registro. Entonces nadie puede acceder a ese campo. Una vez que instale el módulo de permisos de campo, encontrará esta opción para aplicar solo a usuarios anónimos.

Viraj
fuente
1
function module_form_alter(&$form_state, $form_id) {
 if (isset($form['title'])) {
    $form['title']['#required'] = FALSE;
    $form['title']['#type'] = 'value';
  }
}
mks
fuente
0

Intente usar hook_form_alter, vea el siguiente ejemplo:

function MODULENAME_form_alter(&$form_state, $form_id){
      global $user;
      //$form_id :: user detail edit form id
      if($user->uid != 0 && $form_id == "required_form_id"){
         //$field :: requied field name
          $form[$field]['#access'] = FALSE;

      }
   }
Aradhya
fuente
0

coloque este código en un módulo personalizado, el campo podrá en contenido nuevo pero estará deshabilitado para editarlo.

if ($form_id == 'YOUR_FORM_ID') {
//dsm($form);

// for user form use '#user' instead of '#node' and uid instead of nid
if (isset($form['#node']) && isset($form['#node']->nid)){

    // Prevent editing a field once the node has been created
    // hiding the field entirely on the edit form.
    $form['field_name']['#access'] = FALSE;

    // disable update field on the edit form (gray color).
    $form['field_name']['#disabled'] = TRUE;
}

}

pinueve
fuente