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?
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.
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;}
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;}
$ 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.
function MODULENAME_form_alter(&$form_state, $form_id){global $user;//$form_id :: user detail edit form idif($user->uid !=0&& $form_id =="required_form_id"){//$field :: requied field name
$form[$field]['#access']= FALSE;}}
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 nidif(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;}
Réponses:
Vous pouvez essayer le module des autorisations de champ
la source
Si vous voulez le faire dans un module personnalisé
la source
my_module_form_user_register_form_alter
, nonmy_module_form_user_profile_form_alter
.Essayez avec ce code:
la source
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.
la source
la source
Essayez d'utiliser
hook_form_alter
, voir l'exemple ci-dessous:la source
placez ce code dans un module personnalisé, le champ pourra sur le nouveau contenu mais sera désactivé pour le modifier.
}
la source