Usiłuję dodać typ pola „liczba” do formularza za pomocą FAPI:
$form['phone_number']['areacode'] = array(
'#type' => 'textfield',
'#title' => '---',
'#width' => '30%',
'#align' => 'center',
'#required' => true,
'#maxlength' => 3
);
Zmieniam TYPE na „number”, a pole wcale się nie generuje. Moduł liczbowy jest włączony. Wdrożyłem następujące funkcje motywu:
MYTHEME_form_element
MYTHEME_textfield
MYTHEME_container
Co może kryć się za tym polem, które nie wyświetla się, gdy używam #type = number
lub #type = number_integer
etc?
To może mieć z tym coś wspólnego:
Ręczne tworzenie pól liczbowych (liczba całkowita i dziesiętna) w kodzie formularzy niestandardowych
Jednak tak naprawdę chcę, aby ten typ był renderowany jako „liczba” w HTML, aby smartfony wyświetlały dialer numeryczny
Jakieś pomysły?
<input type="number" type="text">
Możesz zainstalować i używać do tego modułu Elements .
źródło
#type="numberfield"
jest poprawnym sposobem dostosowania pola podczas korzystania z tego modułu.'#type' => 'number'
(nie'numberfield'
) w tablicy renderowania.Jestem trochę spóźniony na przyjęcie. Problem polega na tym, że pole tekstowe theme_textfield (D7
includes/form.inc
:, linie 3924ff) jest twarde$element['#attributes']['type'] = 'text';
.Możesz owinąć wspomniane połączenie
if (!isset($element['#attributes']['type'])) { ... }
lub poczekać na zastosowanie poprawki https://www.drupal.org/node/2545318 .źródło
to jest twój kod poniżej ..
powiedz mi, co to jest ['numer_telefonu], to jest kontener, czy nie, czy istnieje w twoim formularzu, czy nie, a jeśli chcesz utworzyć niestandardowe pole w formularzu, powinieneś użyć hook_form_alter hook_form_alter
lubić
mam nadzieję, że ci to pomoże ...
źródło
Nie widzę, aby działał z niepoprawną wartością dla pola #type , jednak możesz zrobić coś takiego:
Element formularza:
I implementacja theme_textfield
źródło