6

いくつかのフィールドを無効にして、hook_page_alter() で読み取り専用にしようとしています。ユーザーがページ編集セクション(フォーム編集)を表示しているかどうかを確認できました

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

次に、いくつかのフィールドを無効にしようとしたときに、次のコードで選択リストを無効にできることがわかりました。

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

しかし、次のコードを使用すると機能しません。

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

また、同じコードを使用してテキスト領域フィールドを無効にできないこともわかりました。

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

上記のコードはテキスト領域を無効にしませんが、同じコードで選択リストを無効にすることができます!

次に、同じことを行うために hook_form_alter() を試してみたところ、フィールドを無効にすることができ、$page 配列からレンダリングされた配列を確認したところ、次のように表示されました。

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

しかし、hook_page_alter() で同じコードを設定すると、機能しませんでした。hook_page_alter() がマークアップを変更する最後の場所だと思いました。

drupal 7 の hook_page_alter() 内で、あらゆる種類のフィールドを無効/読み取り専用にする最良の方法は何ですか?

ありがとうございました

4

2 に答える 2

20

テキストフィールドで機能します^

$form['field_secured_title']['und']['0']['value']['#attributes']['disabled'] = TRUE;
于 2011-03-24T11:46:40.463 に答える