2

Drupal Webフォームに関する別の質問 - フォーム自体は/includes/form.incによって組み込まれています

function theme_form_element($element, $value)

<label>$output に要素を追加します。そのラベルを 1 つの Web フォームに対してのみ削除したいので、関数をオーバーライドする必要があります。他のすべてのフォームで同じままにして、1 つの Web フォームでのみオーバーライドするにはどうすればよいですか? 例えば

if ($block == 'contact'):
  // only output <input> form element stored in $value
  function mytheme_html_form_element($element, $value) {
    $t = get_t();
    $output .= " $value\n";
    return $output;
  }
endif;

これは可能ですか? if 条件には何が入りますか?

4

3 に答える 3

6

ラベルを削除するだけの場合は、hook_form_alter()を使用して、$form_idが問題のWebフォームと等しいことを確認することもできます。IDは次の形式になります:webform_client_form_Nここで、NはWebフォームのノードIDです。

適切なフォームを操作したら、たとえば次のようなコードを使用してラベルの設定を解除できます。

 unset($form['submitted']['first_name']['#title']);

これにより、first_nameというフィールドのラベルが設定解除されます。

于 2010-01-21T22:07:00.740 に答える
1

私はhook_form_alterを実行する必要がありましたが、ラベル自体は['submitted']要素にありました。これがコードです

  if($form_id == 'webform_client_form_18') {
    $form['submitted']['#children'] = '
    <input
     type="text" 
     maxlength="128"
     name="submitted[email]"
     id="edit-submitted-email"
     value="' . $form['submitted']['email']['#default_value']. '"
     class="form-text required"
    />
  ';
  }

別の形式では、#titleを削除しても機能しました(+1!)が、これは別のケースでした。

于 2010-01-25T14:21:39.937 に答える
0

フォーム要素のタイトルを設定解除しません。フォームがテーマ エンジンによってレンダリングされると、予期しない結果が生じる可能性があります。

いくつかの方法でそれを行うことができます:

各要素またはフォーム全体を with でテーマ化し'#theme' => 'my_callback'ます。

対応するテーマ フックを使用する hook_elements を使用して、独自のフォーム要素を作成することもできます。

見る:

http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html

http://api.drupal.org/api/function/hook_elements/6

于 2010-01-24T02:42:46.253 に答える