web-dev-qa-db-ja.com

hook_form_alter()の違いを保存してプレビュー

hook_form_alter() を使用するモジュールを作成しました。フォームが読み込まれると(ノード/追加)フィールドが非表示になり、フックが正常に機能します。フォームのプレビューを実行すると問題が発生します。フォームが再び表示されると、非表示フィールドが表示されます(フックが機能しません)。どうして?

線でフィールドを非表示にします。

$form['field_versio']['und']['0']['value']['#type']="hidden";
1
user709

まず、要素へのアクセスを許可しない#access = FALSEを使用する必要があります。 #type hiddenは安全ではありません。これは、Firebugなどを使用してユーザーが簡単に変更できる非表示の入力フィールドとして出力されることを意味します。

その際、$ form ['field_versio'] ['#access']のように、フィールド要素に直接#accessを設定することもでき、すべてのサブ要素(複数ある場合)へのアクセスを拒否します。

プレビューで機能しない理由がわからない場合は、drupal_set_message( 'test')呼び出しを追加して、フックが呼び出されているかどうかを確認してください。

1
Berdir