Masquer ou désactiver le champ après l'enregistrement

8

J'ai 1 champ sur la page d'enregistrement de l'utilisateur qui ne doit pas être modifié après l'enregistrement du compte. Il doit être masqué ou désactivé. Quel module peut le faire?

Azz Kawa
la source
en relation: drupal.org/node/374416
Mołot

Réponses:

4

Vous pouvez essayer le module des autorisations de champ

Caractéristiques

  • Activez les autorisations de champ sur n'importe quelle entité, pas seulement sur les nœuds.
  • Autorisations de champ basées sur les rôles permettant différents modèles d'affichage en fonction de l'accès dont dispose l'utilisateur.
  • Les autorisations au niveau de l'auteur permettent d'afficher et de modifier des champs en fonction de l'identité du propriétaire de l'entité.
  • Les autorisations pour chaque champ ne sont pas activées par défaut. Au lieu de cela, les administrateurs peuvent activer ces autorisations explicitement pour les champs où cette fonctionnalité est nécessaire.
Bipin K
la source
Comment peut-il faire la différence entre la création d'utilisateur et la modification lorsqu'il s'agit du même champ? Je ne dis pas que c'est impossible, j'aimerais vraiment savoir comment. Et je suppose que OP le ferait aussi.
Mołot
Ce sera une autorisation de champ basée sur le rôle, vous devez donner une autorisation uniquement pour l'anonyme (vous ne savez pas si cette condition fonctionne pour le cas).
Bipin K
8

Si vous voulez le faire dans un module personnalisé

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
la source
Comment peut-il faire la différence entre la création d'utilisateurs et la modification?
DRUPWAY
2
@Smalution Vous n'êtes pas obligé - pour le formulaire d'inscription, ce serait le cas my_module_form_user_register_form_alter, non my_module_form_user_profile_form_alter.
Mołot
1
hook est hook_form_FORM_ID_alter FORM_ID pour l'enregistrement et la modification est diefferent
arpitr
Ok, j'ai compris. J'ai vérifié quand l'utilisateur enregistre son identifiant de formulaire "user-register-form" et lorsque l'utilisateur modifie son identifiant de formulaire "user-profile-form" normalement.
DRUPWAY
Oui, comme prévu :)
arpitr
1

Essayez avec ce code:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }
Adi
la source
2
Veuillez ajouter quelques mots de description.
Mołot
$ form ['field_name'] ['# disabled'] = TRUE; fonctionne également.
pinueve
1

Rendre la propriété de visibilité des champs réservée aux utilisateurs anonymes. La valeur sera donc stockée au moment de l'inscription. Ensuite, personne ne peut accéder à ce champ. Une fois que vous avez installé le module d'autorisation de champ, vous trouverez que cette option ne s'applique qu'à un utilisateur anonyme uniquement.

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

Essayez d'utiliser hook_form_alter, voir l'exemple ci-dessous:

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
la source
0

placez ce code dans un module personnalisé, le champ pourra sur le nouveau contenu mais sera désactivé pour le modifier.

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
la source