7

いくつかの関数を使用して drupal コア フォームを変更できることはわかっていますhook_form_alter()。Webform モジュールで作成された Drupal フォームでこれを使用できますか?

4

5 に答える 5

14

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を参照してください。

それが役立つことを願っています。

于 2012-10-02T03:26:26.360 に答える
6

あなたはそれを行うことができます、

ノードの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;
}
于 2011-06-29T13:41:38.657 に答える
3

hook_form_alter()を使用して、 経由で要素にアクセスできます$form['submitted']

于 2011-06-22T16:56:49.380 に答える
0

あなたが何をしようとしているのかよくわかりませんが、webformモジュールはコンテンツタイプを作成するので-webform-純粋に管理インターフェースを介してwebformによって作成されたフォームを変更できます-新しい入力と入力タイプを追加し、それらが必要かどうかを指定します等

たとえば、「お問い合わせ」フォームには、必要な入力を含めることができます。これは、IIRCに電子メールアドレスとテキストエリアしかないコアのDrupalお問い合わせフォームとは異なります。

于 2011-02-24T14:39:57.450 に答える
0

はい、何らかの理由で Webform ノードを編集することではできない変更を Webform に加える必要がある場合は、hook_form_alter を使用してフォームを変更することもできます。これは、Webform がフォーム API によって作成されるためです。

とは言っても、ウェブフォームの隅々を調べてみてください。フォームの一部を動的に入力または変更するためのオプションが多数用意されています。

于 2011-02-24T18:24:00.457 に答える