Comment faire pour désactiver un champ ou faire readonly dans Drupal 7

Je suis en train de désactiver couple de champs et de les rendre en lecture seule via hook_page_alter(). J'ai été en mesure de vérifier si l'utilisateur est l'affichage de la page edit de l'article (la forme edit)

$page['content']['system_main']['#node_edit_form'] == TRUE)

puis quand j'ai essayé de désactiver le couple de champs, j'ai constaté que la liste de sélection peut être désactivé par le présent code:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#attributes']['disabled'] = TRUE;

mais si j'utilise le code suivant ne fonctionne pas:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE;

J'ai aussi constaté que je ne peux pas utiliser le même code pour désactiver un champ zone de texte:

$page['content']['system_main']['field_my_text_area']['und']['#attributes']['disabled'] = TRUE;

Le code ci-dessus n'est pas de désactiver la zone de texte, mais le même code peut désactiver la liste de sélection!

Ensuite, j'ai essayé hook_form_alter() pour faire la même chose, et j'ai été en mesure de désactiver les champs et quand j'ai vérifié le rendu de la matrice de $tableau page, j'ai vu ce qu'il montre:

$page['content']['system_main']['field_my_field_name_a_select_list']['und']['#disabled'] = TRUE;

mais quand j'ai mis le même code dans hook_page_alter(), ça ne fonctionne pas. Ressemble à quelque chose d'autre va le remplacer, j'ai pensé que hook_page_alter() est le dernier endroit pour changer de balisage.

Aucune idée de quel est le meilleur moyen de le désactiver/readonly tout type de terrain, à l'intérieur de hook_page_alter() dans drupal 7?

Merci

InformationsquelleAutor Mehr | 2011-03-23