FAPIを使用してフォームに「数値」フィールドタイプを追加しようとしています。
$form['phone_number']['areacode'] = array(
'#type' => 'textfield',
'#title' => '---',
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);
TYPEを「number」に変更すると、フィールドがまったく生成されません。番号モジュールが有効になっています。次のテーマ関数を実装しました。
MYTHEME_form_element
MYTHEME_textfield
MYTHEME_container
#type = number
や#type = number_integer
などを使用すると、このフィールドの背後に何が表示されない可能性がありますか?
これはそれと関係があるかもしれません:
カスタムフォームのコードで手動で数値フィールド(整数と10進数)を作成する
ただし、実際にはタイプをHTMLで「数値」としてレンダリングしたいので、スマートフォンは数値ダイヤラを表示します
何か案は?
$form['my_element'] = array(
'#type' => 'textfield',
'#attributes' => array(
' type' => 'number', // insert space before attribute name :)
),
'#title' => 'My number',
'#required' => true,
'#maxlength' => 3
);
モジュール Elements をインストールして使用できます。
パーティーには少し遅れます。問題は、theme_textfield(D7:_includes/form.inc
_、3924ff行目)が_$element['#attributes']['type'] = 'text';
_をハードコード化していることです。
上記の呼び出しをif (!isset($element['#attributes']['type'])) { ... }
でラップするか、パッチ https://www.drupal.org/node/2545318 が適用されるのを待ちます。
これは以下のコードです。
$form['phone_number']['areacode'] = array(
'#type' => 'textfield',
'#title' => '---',
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);
['phone_number']が何であるかを教えてください。それはコンテナであるかどうか、またはフォームに存在するかどうか、フォームにカスタムフィールドを作成する場合は、hook_form_alter hook_form_alter を使用する必要があります
お気に入り
function mymodule_form_alter($form_id, &$form) {
if ($form_id == 'form_id') {
$form['field_name'] = array(
'#type' => 'textfield',
'#title' => t('title'),
'#description' => t('Description.'),
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);
}
}
これがお役に立てば幸いです。
#typeフィールドに無効な値を指定しても機能しないようですが、次のようなことができます。
フォーム要素:
$form['my_element'] = array(
'#type' => 'textfield',
'#attributes' => array(
'data-type' => 'number',
),
'#title' => '---',
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);
そして実装theme_textfield
if(isset($element['#attributes']['data-type']) && $element['#attributes']['data-type'] === 'number'){
$output = '<input type="number" />';
}else{
$output = '<input' . drupal_attributes($element['#attributes']) . ' />';
}