Autor | Zpráva | ||
---|---|---|---|
Shigei Profil |
#1 · Zasláno: 7. 11. 2012, 19:00:15
Potřebuju udělat cykly (např.: while, for, foreach) ve svých šablonách. Tady je nynější funkce na vypsání proměnných:
public function output() { if(!file_exists($this->file)) { return "Chyba při načítání šablony. ($this->file)"; } else { $output = file_get_contents($this->file); foreach($this->values as $key => $value) { $tagToReplace = "{".$key."}"; $val = $value; $output = str_replace($tagToReplace, $val, $output); } echo $output; } } |
||
Jan Tvrdík Profil |
#2 · Zasláno: 7. 11. 2012, 19:15:02
Shigei:
Obvykle se to kvůli výkonu řeší tak, že se šablona zkompiluje do PHP a to se pak spustí. |
||
Shigei Profil |
#3 · Zasláno: 7. 11. 2012, 19:23:35
Jan Tvrdík:
A jak bych to měl zkompilovat do PHP? |
||
Str4wberry Profil |
#4 · Zasláno: 7. 11. 2012, 19:27:51
Že se vezme soubor šablony,
{proměnná} se nahradí za <?php echo $proměnná ?> a uloží se to jako PHP soubor, který se potom vkládá do stránky po naplnění jeho proměnných.
|
||
Shigei Profil |
#5 · Zasláno: 7. 11. 2012, 19:31:19
A jestli se nemýlím, tak se na to používají regulární výrazy?
|
||
Nox Profil |
#6 · Zasláno: 7. 11. 2012, 19:44:26
Tak můžeš použít cokoli, čím dosáhneš žádanýho výsledku, reguláry, řetězcové funkce ... (nejčistší by byl komplet kompilátor s parserem, ale to je v tvém případě přehnané)
|
||
Shigei Profil |
#7 · Zasláno: 7. 11. 2012, 19:49:24
Nox:
Nešlo by to prosím konkrétněji? Chci říct, že jsem v PHP začátečník. |
||
Norman Profil |
|||
Shigei Profil |
#9 · Zasláno: 8. 11. 2012, 06:48:24
Norman:
Možná, že i jo. Už jsem asi z poloviny přišel na atributy.: Tady je funkce "truncate", potřebný jeden parametr. Zápis v šabloně: " {promenna|truncate:40} ". foreach($this->values as $key => $value) { $tagToReplace = "{".$key."|truncate}"; $val = substr($value, 0, $kde_vzit_tuto_promennou); $output = str_replace($tagToReplace, $val, $output); } A nevím, jak získat to číslo 40 z šablony. |
||
Norman Profil |
#10 · Zasláno: 8. 11. 2012, 12:36:11
Tak pro toto je jednoduché řešení, aneb explode("|", $tagToReplace) první parametr bude klíč druhý truncate :)
Nicméně jak jsem řekl, proč tvořit něco takového když lepší už existuje :) |
||
Shigei Profil |
#11 · Zasláno: 8. 11. 2012, 14:18:10
Norman
Ano, jenže já potřebuji zjistit, kolik písmen chce uživatel zobrazit. V tomto případě 40. A když nic nenapíše, aby se zasadila defaultní hodnota, třeba 10. |
||
Tori Profil |
#12 · Zasláno: 8. 11. 2012, 14:39:54
Shigei:
„jenže já potřebuji zjistit, kolik písmen chce uživatel zobrazit“ Postupovala bych spíš opačně, tj. pomocí preg_replace_callback najít všechny řetězce ve složených závorkách, dosadit hodnotu z nějakého pole hodnot, a pokud je zadaný jeden nebo více helperů (např. truncate) tak jim předat hodnotu + zadané parametry. Muselo by k tomu být nějaké pole pro překlad [název helperu] => [callback], výchozí hodnoty by se určovaly v té callback funkci/metodě. |
||
Časová prodleva: 12 let
|
0