Próbuję dodać atrybut zastępczy do wszystkich pól tekstowych w mojej witrynie, ale nie mam szczęścia.
Stworzyłem moduł, który zastępuje hook_form_alter
function mymodule_form_alter(&$form, &$form_state, $form_id)
{
foreach ($form as $key => $value) {
if ("textfield" == $value["#type"]){
$value['#attributes']["placeholder"] = t($value["#title"]);
}
}
}
Powinienem powiedzieć, że używam również modułu formularza internetowego.
Nieznacznie zmień na ...
$value
we wszystkich zakresach jest typ wartości, a nie odniesienie.EDYTOWAĆ:
Właśnie eksperymentowałem z następującym kodem i udało mi się rekurencyjnie iterować całą formę dla pól tekstowych w celu edycji ich atrybutów.
źródło
Prawdopodobnie możesz to zrobić za pomocą
hook_form_alter
lubhook_form_FORM_ID_alter
i dodając atrybut „symbol zastępczy”np. niesprawdzone, ale coś takiego:
Znajdź ukryty element formularza o nazwie HTML formularza internetowego,
form_id
aby uzyskać poprawny identyfikator formularza dlaform_alter
nazwy funkcji.źródło
Lepsze podejście do kodu Josua Pedersena:
źródło
W swoim kodzie zmieniasz zmienną,
$value
która nigdy nie zostanie skojarzona ze zmienną$form
, która jest przekazywana przez odwołanie.Oczywiście wprowadzasz pewne zmiany, ale nie odsyłasz ich z powrotem do Drupala.
Możesz to zrobić w ten sposób (nie testowałem tego, ale teoretycznie powinno działać).
Byłem po prostu leniwy, aby dodać czek
fieldset
i dodać symbol zastępczy do dzieci. Ale myślę, że możesz to bardzo łatwo zmienić.źródło
Nieznaczne ulepszenie rozwiązania pliku szablonu @ Josua: Ten kod doda również tekst zastępczy do funkcji e-mail w formularzu internetowym.
źródło
używając hook_form_alter spróbuj tego
źródło
Dla każdego, kto korzysta ze starszej lub nieaktualnej wersji modułu Webform firmy Drupal , warto zauważyć, że obsługa symboli zastępczych została dodana w
7.x-4.x branch
(czerwiec 2013 r.).Zatem funkcja zastępcza HTML5 jest teraz natywną, wbudowaną opcją wraz z niestandardowymi klasami CSS dla komponentów i kilkoma innymi długo oczekiwanymi funkcjami.
Oto zrzut ekranu przedstawiający nową funkcjonalność:
źródło
Wydaje mi się, że w większości przypadków można dodawać atrybuty zastępcze tylko w niektórych formularzach.
Jeśli chcesz dodać symbol zastępczy do wszystkich formularzy internetowych, możesz to zrobić w następujący sposób:
źródło
Wystarczy użyć do tego modułu: Wskazówki do formularza internetowego
To jest dokładnie to, czego potrzebujesz. Jest łatwy w zarządzaniu i nie ma potrzeby dostosowywania kodu. Ten moduł zapewnia także obsługę starszych przeglądarek, które nie obsługują atrybutu zastępczego.
źródło