Drupal - Web フォーム要素のテーマ設定
-
22-09-2019 - |
質問
Drupal Webformsについての別の質問 - フォーム自体が組み込まれています /includes/form.incさんの
function theme_form_element($element, $value)
そして追加します <label>
要素を $output に追加します。1 つの Web フォームに対してのみそのラベルを削除したいので、関数をオーバーライドする必要があります。他のすべての 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 条件には何が入りますか?
解決 2
私はhook_form_alterを行う必要がありましたが、ラベル自体は[「提出」]要素でいました。 ここではコードです。
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)を働いていたが、これは別のケースだった。
他のヒント
、あなたも( hook_form_alterを使用することができます)の、および$ form_idが問題のWebフォームと同じであることを確認してください。 IDの形式は次のようになります。webform_client_form_N NはWebフォームのノードIDである
あなたが適切なフォームにしているオペレーティング、あなたが使用してラベルの設定を解除することができたら、例えば、次のようなコード:
unset($form['submitted']['first_name']['#title']);
FIRST_NAMEというフィールドのラベルの設定を解除します。
私は未設定のフォーム要素のタイトルをではないだろう。あなたのフォームがテーマエンジンによってレンダリングされるときに、予期しない結果を得ることができます。
あなたはそれにいくつかの方法を行うことができます:
テーマ各要素または'#theme' => 'my_callback'
有するとともに全体フォーム
また、対応するテーマフックを使用していますhook_elementsを使用して、独自のフォーム要素を作成することができます。
を参照してください:
http://api.drupal.org/api /drupal/developer--topics--forms_api_reference.htmlする