Sie müssen HTML-Zeichen zur Auswahlliste hinzufügen

9

Ich habe ein Formular mit dem FAPI, das eine ausgewählte Liste von Währungswerten als Eingabe enthält. Ich muss in der Lage sein, HTML-Zeichen wie hinzuzufügen€ $pound; ¥

Das Problem ist, dass Drupal die Eingabe filtert und nicht die gewünschten Symbole anzeigt, sondern die tatsächlichen HTML-Codes wie oben angezeigt.

Gibt es eine Möglichkeit, dass Drupal meine Liste nicht filtert?

Kevin Bradshaw
quelle

Antworten:

4

Sie können und sollten die UTF-8-Zeichen für die Symbole in Ihre Liste aufnehmen. HTML-Entitäten sind ein Relikt aus der Vergangenheit, als es möglich war, dass einige Symbole keine Darstellung in der aktiven Codepage hatten. Verwenden Sie daher einfach €, £ und ¥ in Ihren Listen.

Drupal ist UTF-8 von hinten nach vorne: Verwenden Sie es.

fietserwin
quelle
danke für deine einfache antwort, leider war es nicht ganz so einfach. Das Einfügen von UTF-8-Zeichen allein funktioniert möglicherweise nicht. Ich musste: php.ini überprüfen, um sicherzustellen, dass mein Standardzeichensatz ut8-f war, und sicherstellen, dass meine Header <meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" /> in hatten sie UND WICHTIGSTES .. stellen Sie sicher, dass Ihre Seiten als utf-8 gespeichert sind. In meinem Fall musste ich in Eclipse mit der rechten Maustaste auf meine Seite klicken, um den Eigenschaftendialog aufzurufen. Von hier aus musste ich sicherstellen, dass das Codierungsattribut für Textdateien auf UTF-8 gesetzt war. Ich musste dies für jede Seite tun, z. page.tpl und alle enthält
Kevin Bradshaw
Dies sollte bei der Entwicklung in Drupal Standard sein. Das Metatag vom Inhaltstyp wird von Drupal hinzugefügt (zumindest in D6, vielleicht bleibt es in D7 dem Thema überlassen, aber selbst dann gibt jedes einzelne Thema utf-8 als Zeichensatz aus). Und Eclipse, na ja, es ist eine Schande, dass Eclipse standardmäßig mit etwas anderem als utf-8 ausgeliefert wird. Vergessen Sie nicht, Ihren Arbeitsbereichsstandard auf utf-8 zu setzen, um das gleiche Problem bei zukünftigen Projekten zu vermeiden.
Fietserwin
1

Als Lösung können Sie die Eigenschaft #after_build für Ihr Formularelement verwenden.

Angenommen, Sie haben eine Variable $ options mit Optionen zur Auswahl

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

dann müssen Sie Ihre Formatierungsfunktion wie definieren

function  custom_select_formatter($form_element, $form_state){

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

Hier können Sie Ihr ausgewähltes Element neu definieren, auch wenn Sie #preeme #prefix #suffix hinzufügen

Eine andere mögliche Lösung ist möglicherweise, dass die Funktion l () in diesem Beispiel die HTML-Option verwendet, wenn Links mit Bildern erstellt werden. Möglicherweise wird sie auch von einem ausgewählten Element verwendet

werqious
quelle