いくつかの関数を使用して drupal コア フォームを変更できることはわかっていますhook_form_alter()
。Webform モジュールで作成された Drupal フォームでこれを使用できますか?
5 に答える
Drupal 7 では、hook_form_alter()
またはhook_form_<formid>_alter()
のどちらか好きな方を使用できます。命名とパラメータが正しいことを確認してください。ただし、Drupal 6 のみがサポートされますhook_form_alter()
。
これらの関数を作成するときは、キャッシュをフラッシュするまで Drupal が常にそれらを認識できるとは限らないことにも注意してください。
注意すべきもう 1 つの重要な点は、Web フォーム フィールドを変更する場合は、 で変更を行う必要があることです$form['submitted']
。最初に編集しようとしたのは間違いでした$form['#node']->webform['components']
。これは効果がありません。
詳細については、http: //drupal.org/node/1558246を参照してください。
それが役立つことを願っています。
あなたはそれを行うことができます、
ノードのIDが必要なだけで、hook_form_<FORMID>_alter()のようにIDを使用します
生成される FORMID は webform_client_form_<NODEID> です。
ここで、NODEID はノードの ID です
したがって、mymodule という名前のモジュールと、Web フォームを持つ ID 44 のノードがある場合
function mymodule_form_webform_client_form_44_alter(&$form, &$form_state) {
// code here;
}
hook_form_alter()
を使用して、 経由で要素にアクセスできます$form['submitted']
。
あなたが何をしようとしているのかよくわかりませんが、webformモジュールはコンテンツタイプを作成するので-webform-純粋に管理インターフェースを介してwebformによって作成されたフォームを変更できます-新しい入力と入力タイプを追加し、それらが必要かどうかを指定します等
たとえば、「お問い合わせ」フォームには、必要な入力を含めることができます。これは、IIRCに電子メールアドレスとテキストエリアしかないコアのDrupalお問い合わせフォームとは異なります。
はい、何らかの理由で Webform ノードを編集することではできない変更を Webform に加える必要がある場合は、hook_form_alter を使用してフォームを変更することもできます。これは、Webform がフォーム API によって作成されるためです。
とは言っても、ウェブフォームの隅々を調べてみてください。フォームの一部を動的に入力または変更するためのオプションが多数用意されています。