Avatar billede magnuspersson19 Nybegynder
13. juli 2011 - 13:17 Der er 2 kommentarer

Templatesystem Layout?

Hej. Jeg er i gang med et templatesystem. Lige nu fungerer det således:

echo Template::execute(
    "layout.html",
    array(
        'content' => View::execute(
            "profile.html",
            array(
                "id" => "2"
            )
        )
    )
);


Men det skal laves så jeg også kan vise profile.html UDEN layout. Desuden synes jeg det er en lidt underlig måde.

Min kode er

class Template {
public function execute($filename, $variables) {
  $content = file_get_contents($filename);

  foreach($variables as $k => $v) {
  $content = str_replace("%{" . $k . "}", $v, $content);
  }

  return $content;
}
}

Er der nogen, der har forslag til en 'mere rigtig måde' at lave templatesystem med mulighed for layouts?
Avatar billede magnuspersson19 Nybegynder
13. juli 2011 - 13:22 #1
Jeg kan se, at Smarty har lavet en funktion en include funktion {include file="header.tpl" title=foo}. Det synes jeg virker lidt mere rodet end at bestemme layout og indhold i selve php-filerne.
Avatar billede magnuspersson19 Nybegynder
13. juli 2011 - 13:42 #2
Jeg har også tænkt på

class Template
{
    public function __construct($filename)
    {
        $this->content = file_get_contents($filename);
    }

    public function assign($key, $value)
    {
        $this->content = str_replace("%{" . $key . "}", $value, $this->content);
    }

    public function __toString()
    {
        return $this->content;
    }
}

$layout = new Template("layout.html");
$content = new Template("profile.html");

$content->assign("id", 19);
$content->assign("name", "Navn");

$layout->assign("content", $content);

echo $layout;



men det virker også for rodet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
30 min siden Tomt felt i Start Af ErikHg i Windows
I går 23:00 Hyperlink til tekst Af Nanarsi i Excel
18/0121:03 Forlænge ringetid Af 1Dorte i Apps til Android
17/0117:38 Video ikoner Af Malm i Windows
17/0117:27 Video ikoner Af logbuilders i Windows