Ik probeer op eenvoudige wijze PHP code te scheiden van HTML. Onderstaande twee scripts zij een afgeleide van het artikel op http://www.massassi.com/php/articles/template_engines/ en werken voor mij goed genoeg.
Ik heb alleen een probleem met de variabelen die vanuit een form op een pagina, of gewoon in index.php worden gedefinieerd. Het lukt niet om de te parsen.
In index.php zie je de variabele $lang. Omdat die niet alleen voor één template geldt, maar voor alle templates op een pagina wil ik die niet steeds hoeven te definieren. Vandaar in global.php de code: $this->set('lang', $lang);
Dat werkt dus niet!
Maak ik daarvan: $this->set('lang', "uk"); werkt het wel.
Kennelijk wordt de waarde van $lang niet meegegeven.
Iemand een idee, want ik wordt er gek van!
------------------
index.php
------------------
------------------
global.php
------------------
Ik heb alleen een probleem met de variabelen die vanuit een form op een pagina, of gewoon in index.php worden gedefinieerd. Het lukt niet om de te parsen.
In index.php zie je de variabele $lang. Omdat die niet alleen voor één template geldt, maar voor alle templates op een pagina wil ik die niet steeds hoeven te definieren. Vandaar in global.php de code: $this->set('lang', $lang);
Dat werkt dus niet!
Maak ik daarvan: $this->set('lang', "uk"); werkt het wel.
Kennelijk wordt de waarde van $lang niet meegegeven.
Iemand een idee, want ik wordt er gek van!
------------------
index.php
------------------
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?php if (!$lang) {$lang = "uk";} // even aangepast :-) require_once('global.php'); $tpl = & new Template('templates/default.tpl'); $tpl->set('title', $page); $content = & new Template('content/' .$lang . '/' . $page. '.inc'); $tpl->set('content', $content); echo $tpl->fetch('templates/default.tpl'); ?> |
------------------
global.php
------------------
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| class Template { var $vars; function Template($file = null) { $this->file = $file; $this->set('lang', $lang); } function set($name, $value) { $this->vars[$name] = is_object($value) ? $value->fetch() : $value; } function fetch($file = null) { if(!$file) $file = $this->file; extract($this->vars); ob_start(); include($file); $contents = ob_get_contents(); ob_end_clean(); return $contents; } } |
[ Voor 9% gewijzigd door Verwijderd op 07-07-2004 16:47 ]