Dans Drupal 7, quelle est la meilleure façon d'empêcher un utilisateur non administratif de modifier un champ de profil utilisateur personnalisé?
Cas d'utilisation: j'ai créé un champ utilisateur appelé "ID client" que je ne souhaite pas que l'utilisateur (l'un de mes clients réels) modifie. Le champ existe pour ma propre référence et pour une utilisation programmatique dans d'autres modules. Cela ne me dérange pas que l'utilisateur voit l'ID client, mais il ne devrait pas être en mesure de le modifier.
Dois-je remplacer le modèle de page pour la page de profil utilisateur? Si oui, comment le modèle est-il modifié pour rendre un champ en lecture seule ou invisible?
Merci beaucoup pour votre aide!
Chris
Field Permissions
fonctionne très bien avec Drupal 8 mais vous ne pouvez masquer que les champs personnalisés je pense (j'avais besoin de hyde aussi le nom d'utilisateur)Pour masquer le champ du formulaire de profil utilisateur, vous pouvez définir la
#access
propriété d'un champ sur FAUX à l'aide dehook_form_FORMID_alter
.L'extrait de code suivant masque le champ
field_organisation
du formulaire de profil utilisateur pour les non-administrateurs:Voir aussi cette question similaire sur les drupalanswers
Vous pouvez également masquer le champ de la page de profil utilisateur (pas le formulaire) à l'aide de template_preprocess_user_profile
L'extrait de code suivant masque le champ
field_organisation
de la page utilisateur pour les non-administrateurs:la source
Il semble y avoir un module appelé http://drupal.org/project/user_readonly "Le module permet à un administrateur d'empêcher la modification des champs de compte / profil utilisateur. L'administrateur peut sélectionner quels champs seront interdits, ou quels champs seront permis."
la source