Besoin d'ajouter des caractères HTML à la liste de sélection

9

J'ai un formulaire utilisant le FAPI qui a une liste sélectionnée de valeurs monétaires comme l'une de ses entrées. Je dois pouvoir ajouter des caractères HTML tels que€ $pound; ¥

Le problème est que Drupal filtre l'entrée et n'affiche pas les symboles souhaités, mais affiche les codes html réels comme indiqué ci-dessus.

Existe-t-il un moyen pour Drupal de ne pas filtrer ma liste?

Kevin Bradshaw
la source

Réponses:

4

Vous pouvez et devez mettre les caractères UTF-8 pour les symboles dans votre liste. Les entités HTML sont une relique du passé où il était possible que certains symboles n'aient pas été représentés dans la page de code active. Utilisez donc simplement €, £ et ¥ dans vos listes.

Drupal est UTF-8 de l'arrière vers l'avant: utilisez-le.

fietserwin
la source
merci pour votre réponse simple, malheureusement ce n'était pas aussi simple que cela. l'insertion de caractères UTF-8 seuls peut ne pas fonctionner. Je devais: vérifier php.ini pour m'assurer que mon jeu de caractères par défaut était ut8-f, m'assurer que mes en-têtes avaient <meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" /> in eux ET PLUS IMPORTANT .. assurez-vous que vos pages sont enregistrées en utf-8. dans mon cas, j'ai dû faire un clic droit sur ma page dans éclipse pour faire apparaître la boîte de dialogue des propriétés. À partir de là, je devais m'assurer que l'attribut d'encodage des fichiers texte était réglé sur UTF-8. Je devais le faire pour chaque page, par exemple. page.tpl et tout inclus
Kevin Bradshaw
Tout cela devrait être standard lors du développement dans Drupal. La balise META de type de contenu est ajoutée par Drupal (au moins en D6, peut-être qu'en D7, elle est laissée au thème, mais même alors, chaque thème génère utf-8 comme charset). Et Eclipse, eh bien, c'est dommage qu'Eclipse soit livré avec autre chose qu'utf-8 par défaut. N'oubliez pas de définir votre norme d'espace de travail sur utf-8 pour éviter le même problème avec les futurs projets.
fietserwin
1

Comme solution, vous pouvez utiliser la propriété #after_build pour votre élément de formulaire.

disons que vous avez la variable $ options avec des options pour select

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

alors vous devez définir votre fonction de formateur comme

function  custom_select_formatter($form_element, $form_state){

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

ici, vous pouvez redéfinir votre élément de sélection même vous pouvez #theme ajouter #prefix #suffix

une autre solution probablement est peut-être que la fonction l () dans cet exemple utilise l'option html lors de la création de liens avec des images peut-être que l'élément select l'utilise également

werqious
la source