Musisz dodać znaki HTML do listy Wybierz

9

Mam formularz przy użyciu interfejsu FAPI, który ma jedną z wybranych wartości walut jako jedną z danych wejściowych. Muszę mieć możliwość dodawania znaków HTML, takich jak€ $pound; ¥

Problem polega na tym, że Drupal filtruje dane wejściowe i nie wyświetla pożądanych symboli, ale wyświetla rzeczywiste kody HTML, jak pokazano powyżej.

Czy jest jakiś sposób, aby Drupal nie filtrował mojej listy?

Kevin Bradshaw
źródło

Odpowiedzi:

4

Możesz i powinieneś wstawić znaki UTF-8 dla symboli na liście. Jednostki HTML są reliktem z przeszłości, kiedy to możliwe, że niektóre symbole nie miały reprezentacji na aktywnej stronie kodowej. Dlatego po prostu użyj €, £ i ¥ na swoich listach.

Drupal to UTF-8 od tyłu do przodu: użyj go.

fietserwin
źródło
dziękuję za twoją prostą odpowiedź, niestety nie było to tak proste. wstawianie samych znaków UTF-8 może nie działać. Musiałem: sprawdzić php.ini, aby upewnić się, że mój domyślny zestaw znaków to ut8-f, upewnić się, że moje nagłówki mają <meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" /> w je i NAJWAŻNIEJSZE ... upewnij się, że twoje strony są zapisane jako utf-8. w moim przypadku musiałem kliknąć prawym przyciskiem myszy stronę w zaćmieniu, aby wyświetlić okno dialogowe właściwości. Stąd musiałem upewnić się, że atrybut kodowania pliku tekstowego jest ustawiony na UTF-8. Musiałem to zrobić dla każdej strony, np. page.tpl i wszelkie zawarte
Kevin Bradshaw,
Wszystko to powinno być standardowe podczas opracowywania w Drupal. Metatag typu content jest dodawany przez Drupala (przynajmniej w D6, być może w D7 jest on pozostawiony motywowi, ale nawet wtedy każdy motyw wypisuje utf-8 jako zestaw znaków). I Eclipse, cóż, szkoda, że ​​Eclipse jest domyślnie dostarczane z czymś innym niż utf-8. Nie zapomnij ustawić standardowego obszaru roboczego na utf-8, aby uniknąć tego samego problemu w przyszłych projektach.
fietserwin
1

Jako rozwiązanie możesz użyć właściwości #after_build dla elementu formularza.

Powiedzmy, że masz zmienną $ options z opcjami select

$form['myselect']['options'] = $options;
$form['myselect']['#after_build'][] = 'custom_select_formatter';

następnie musisz zdefiniować swoją funkcję formatera jak

function  custom_select_formatter($form_element, $form_state){

$options = $form_element['#options'] //you can use your option values
}

tutaj możesz przedefiniować wybrany element, nawet # możesz dodać #prefiks # suffix

innym prawdopodobnie rozwiązaniem jest być może funkcja l () w tym przykładzie korzysta z opcji html podczas tworzenia łączy z obrazami, może select element również z niej korzysta

gwałtowny
źródło