Ik maak gebruik van RainTPL template engine om mijn logica en datapresentatie te scheiden. Nu loop ik alleen tegen een probleem waar ik de "beste" oplossing voor zoek.
Ik heb nu een pagina die ik voor het gemak "helloworld" noem. Hierbij hoort een helloworld template die vervolgens een header template en footer template aanroept. Nu heb ik in de header een check gemaakt zo iets als
En nu komt het probleem. Ik wil in de logged_in_header een aantal variabelen weergeven zoals gebruikersnaam, email enz. Maar deze moet ik dus ergens declareren en ik wil niet op elke pagina eerst 10 regels copy pasten die kijkt of iemand is ingelogd en vervolgens wat variabelen ophaalt/genereert. Dit wil ik door de template logged_in_header laten doen maar dit kan dus niet omdat dit alleen datapresentatie mag bevatten.
Hoe los ik dit het best op? Op dit moment ziet mijn code er dan zo uit (wat ik dus niet wil).
Zoals je ziet $auth->assignTplUserVars() is dus mijn dirty work around
Hoe zorg ik ervoor dat ik niet overal $auth->assignTplUserVars() hoef aan de roepen om variabelen aan te maken die in de logged_in_header template thuis horen.
Ik heb nu een pagina die ik voor het gemak "helloworld" noem. Hierbij hoort een helloworld template die vervolgens een header template en footer template aanroept. Nu heb ik in de header een check gemaakt zo iets als
code:
1
2
3
4
5
| {if="$logged_in == true"}
{include="logged_in_header"}
{else}
{include="not_logged_in_header"}
{/if} |
En nu komt het probleem. Ik wil in de logged_in_header een aantal variabelen weergeven zoals gebruikersnaam, email enz. Maar deze moet ik dus ergens declareren en ik wil niet op elke pagina eerst 10 regels copy pasten die kijkt of iemand is ingelogd en vervolgens wat variabelen ophaalt/genereert. Dit wil ik door de template logged_in_header laten doen maar dit kan dus niet omdat dit alleen datapresentatie mag bevatten.
Hoe los ik dit het best op? Op dit moment ziet mijn code er dan zo uit (wat ik dus niet wil).
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <?php
include("inc/raintpl.init.php");
$tpl = new RainTPL;
include("inc/authentication.class.php");
$auth = new Authentication;
$welcome = "Welkom op mijn eerste Hello World pagina met RainTPL :)";
$tpl->assign("welcome", $welcome);
$auth->assignTplUserVars();
$tpl->draw("helloworld");
?> |
Zoals je ziet $auth->assignTplUserVars() is dus mijn dirty work around
code:
1
2
3
4
5
6
| public function assignTplUserVars()
{
global $tpl;
$this->user = "dylan";
$tpl->assign("user", $this->user);
} |
Hoe zorg ik ervoor dat ik niet overal $auth->assignTplUserVars() hoef aan de roepen om variabelen aan te maken die in de logged_in_header template thuis horen.