Bonjour,
J'ai créé une classe pour écrire du HTML via DOMDocument. Il s'agit d'une structure à base de DIV avec un header, un footer et un div de contenu.
Je souhaite implémenter une fonction pour écrire du code HTML personnalisé dans le div de contenu, mais quand je l'ajoute en tant que texte, il encode les caractères HTML.
J'ai également essayé de créer un nouveau DOMDocument à partir de ma chaîne de code HTML, sans succès.
Quelqu'un aurait une idée ?
Merci d'avance.
La classe (ça coince au niveau de la fonction setContent) :
Utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 class Popup { static $id; static $html; public function __construct($id){ $this->id = $id; $dom = new DOMDocument('1.0', 'iso-8859-1'); $popupdiv = $dom->createElement('div'); $popupdiv->setAttribute('id',$id); $popupdiv->setAttribute('class','popup'); $popupdiv->setAttribute('style','display:block;'); $dom->appendChild($popupdiv); $headerdiv = $dom->createElement('div'); $headerdiv->setAttribute('class','popup_header'); $popupdiv->appendChild($headerdiv); $maindiv = $dom->createElement('div'); $maindiv->setAttribute('class','popup_main'); $popupdiv->appendChild($maindiv); $footerdiv = $dom->createElement('div'); $footerdiv->setAttribute('class','popup_footer'); $popupdiv->appendChild($footerdiv); $this->html = $dom; } public function setTitle($title){ $headertext = $this->html->createTextNode($title); $this->html->firstChild->firstChild->appendChild($headertext); $this->html->firstChild->firstChild->replaceChild($headertext, $this->html->firstChild->firstChild->firstChild); } public function setContent($content){ $contenthtml = new DOMDocument('1.0', 'iso-8859-1'); $contenthtml->loadHTML($content); $this->html->firstChild->childNodes->item(1)->appendChild($contenthtml); } public function addCancelButton($label="Annuler"){ $button = $this->html->createElement('input'); $button->setAttribute('type','button'); $button->setAttribute('value',$label); $button->setAttribute('onclick',"javascript:document.getElementById('".$this->id."').style.display='none';"); $this->html->firstChild->childNodes->item(2)->appendChild($button); } public function display(){ echo $this->html->saveHTML(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $pop = new Popup("testpopup"); $pop->setTitle("Test"); $pop->setContent("<p>bla <strong>bla</strong> bla</p><p>lol</p>"); $pop->addCancelButton(); $pop->display();
Partager