Autor | Zpráva | ||
---|---|---|---|
H13 Profil |
#1 · Zasláno: 13. 12. 2006, 17:50:14
Ahoj potřeboval bych poradit s jedním problémem. Potřebuji dostat HTML kód do proměnné...
Uvedu to na příkladu. Jeden CMS řeší zobrazení dat tak, že funkce nevrací hodnotu returnem ale rovnou generuje HTML. Příkladem je kód HTML - tabulka a mezi <td> </td> je vloženo např. <td><?php Ukaz::ukazTabulka();?></td>. V metodě ukazTabulka je uvnitř přímo kód HTML (viz kód níže), takže není problém, když toto vložíte přímo do HTML. Bohužel já generuji tabulky pomocí PEAR - HTML_Table, takže potřebuji dostat do metody $table->setHeaderContents(0, 0, $promenna); proměnnou, jestliže tam vložím metodu: $table->setHeaderContents(0, 0, Ukaz::ukazTabulka());, tak se sice kód HTML vygeneruje, ovšem úplně někde jinde... Je možný toto nějakým způsobem vyřešit tak, abych nepředělával metody...
|
||
k Profil * |
#2 · Zasláno: 13. 12. 2006, 17:56:17
je to logicke na to abys to mohl nacpat do promenne tak ten html kod musis vratit returnem:
function ukazTabulka() { $html="<table border=\"1\"><tr><td>Neco</td></tr></table>"; return $html; } |
||
rabbit Profil |
#3 · Zasláno: 13. 12. 2006, 18:00:14
Ahoj, problém je v tom, že metoda Ukaz::ukazTabulka() nevrací tabulku, ale posílá ji na output. Tzn. po zápisu $promenna = Ukaz::ukazTabulka(); máš v proměnné $promenna hodnotu null.
Vyřešit to můžeš tak, že si zapneš output buffering. Příklad:
|
||
H13 Profil |
#4 · Zasláno: 13. 12. 2006, 19:46:55 · Upravil/a: H13
rabbit
Díky moc, přesně tak jsem si to představoval a přesně to jsem potřeboval, protože překopávat celej CMS bych asi nezvládl...Funguje to... A jako správny amatér se ještě zeptám, zda tohle řešení má nějaký nevýhody (kromě toho, že to není moc elegantní a bude to asi pomalejší). Mám na mysli, jestli třeba můžu narazit na to, že např. někde buffering fungovat nebude, nebo ... A ještě otázku, jak se zbavit výstupu který se vygeneruje mimo danou oblast ob_start(); Jinak ještě jednou díky moc |
||
H13 Profil |
#5 · Zasláno: 13. 12. 2006, 21:36:38
nyní to negeneruje mimo oblast (asi proto, protože toho bufferování bylo víc):
ob_start(); Ukaz::ukazTabulka(); $promenna = ob_get_contents(); ob_end_clean(); |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0