web-gelistirme-sc.com

Form API'sındaki sayısal alan türü

FAPI kullanarak bir forma "sayı" alan türü eklemek çalışıyorum:

$form['phone_number']['areacode'] = array(
  '#type' => 'textfield',
  '#title' => '---',
  '#width' => '30%',
  '#align' => 'center',
  '#required' => true,
  '#maxlength' => 3
);

TYPE değerini "sayı" olarak değiştiriyorum ve alan hiç oluşturulmuyor. Sayı modülü etkindir. Aşağıdaki tema işlevlerini uyguladım:

  • MYTHEME_form_element
  • MYTHEME_textfield
  • MYTHEME_container

#type = number Veya #type = number_integer Vb. Kullandığımda bu alanın arkasında ne görünmeyebilir?

Bunun onunla bir ilgisi olabilir:

Özel formlar için kodda elle Sayı alanları (tamsayı ve ondalık) oluşturma

Ancak aslında akıllı telefonların sayısal bir çevirici göstermesi için türün HTML'de "sayı" olarak görüntülenmesini istiyorum

Herhangi bir fikir?

12
Alex.Barylski
$form['my_element'] = array(
    '#type' => 'textfield',
    '#attributes' => array(
        ' type' => 'number', // insert space before attribute name :)
    ),
    '#title' => 'My number',
    '#required' => true,
    '#maxlength' => 3
);
13
Arthur

Bunun için Elements modülünü kurabilir ve kullanabilirsiniz.

5
kala4ek

Partiye biraz geç kaldım. Sorun şu ki, theme_textfield (D7: includes/form.inc, Satır 3924ff) sabit kodlar $element['#attributes']['type'] = 'text';.

Adı geçen çağrıyı bir if (!isset($element['#attributes']['type'])) { ... } içine sarabilir veya düzeltme ekinin https://www.drupal.org/node/2545318 uygulanmasını bekleyebilirsiniz.

2
Skynet

bu aşağıdaki kodunuz ..

$form['phone_number']['areacode'] = array(
'#type' => 'textfield',
'#title' => '---',
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);

lütfen bana ['phone_number'] ne olduğunu söyle, bu bir kapsayıcı ya da değil ya da formunda var ya da değil ve formunda özel alan oluşturmak istiyorsan hook_form_alter hook_form_alter kullanmalısın

sevmek

  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
 );
  }
   }

umarım bu yardım eder ..

1
Kamal Oberoi

# type alanı için geçersiz değerle çalıştığını görmüyorum, ancak böyle bir şey yapabilirsiniz:

Form öğesi:

$form['my_element'] = array(
    '#type' => 'textfield',
    '#attributes' => array(
        'data-type' => 'number',
    ),
    '#title' => '---',
    '#width' => '30%',
    '#align' => 'center',
    '#required' => true,
    '#maxlength' => 3
);

Ve uygulamak theme_textfield

if(isset($element['#attributes']['data-type']) && $element['#attributes']['data-type'] === 'number'){
    $output = '<input type="number" />';
}else{
    $output = '<input' . drupal_attributes($element['#attributes']) . ' />';
}
0
Victor Lazov