J'essaie d'ajouter un type de champ "numéro" à un formulaire à l'aide de FAPI:
$form['phone_number']['areacode'] = array(
'#type' => 'textfield',
'#title' => '---',
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);
Je change le TYPE en "nombre" et le champ n'est pas généré du tout. Le module numérique est activé. J'ai implémenté les fonctions thématiques suivantes:
MYTHEME_form_element
MYTHEME_textfield
MYTHEME_container
Que peut-il y avoir derrière ce champ qui n'apparaît pas lorsque j'utilise #type = number
ou #type = number_integer
, etc?
Cela pourrait avoir quelque chose à voir avec cela:
Cependant, je veux que le type soit rendu sous forme de "nombre" en HTML pour que les téléphones intelligents affichent un numéroteur numérique
Des idées?
$form['my_element'] = array(
'#type' => 'textfield',
'#attributes' => array(
' type' => 'number', // insert space before attribute name :)
),
'#title' => 'My number',
'#required' => true,
'#maxlength' => 3
);
Vous pouvez installer et utiliser le module Elements pour cela.
Je suis un peu en retard à la fête. Le problème est que theme_textfield (D7: includes/form.inc
, Lignes 3924ff) codent en dur $element['#attributes']['type'] = 'text';
.
Vous pouvez envelopper cet appel dans une if (!isset($element['#attributes']['type'])) { ... }
ou attendre que le patch https://www.drupal.org/node/2545318 soit appliqué.
voici votre code ci-dessous ..
$form['phone_number']['areacode'] = array(
'#type' => 'textfield',
'#title' => '---',
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);
s'il vous plaît dites-moi ce qu'est ['phone_number'], c'est un conteneur ou non ou son existe dans votre formulaire ou non et si vous voulez créer un champ personnalisé dans votre formulaire, vous devez utiliser hook_form_alter hook_form_alter
comme
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
);
}
}
j'espère que cela vous aide ..
Je ne le vois pas fonctionner avec une valeur non valide pour le champ # type, mais vous pouvez faire quelque chose comme ça:
L'élément de formulaire:
$form['my_element'] = array(
'#type' => 'textfield',
'#attributes' => array(
'data-type' => 'number',
),
'#title' => '---',
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);
Et implémenter theme_textfield
if(isset($element['#attributes']['data-type']) && $element['#attributes']['data-type'] === 'number'){
$output = '<input type="number" />';
}else{
$output = '<input' . drupal_attributes($element['#attributes']) . ' />';
}