[templates] parsefile met php code

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

Ik maak al lang gebruik van templates om de boel naar te parsen. Ik heb bijvoorbeeld deze code:


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
include("template.php"); // template.php includen
include ('date.php'); 
include ('menu.php');
$template = new template; // nieuwe template aanmaken 
$template->assign_vars(array( 
    "SITE_TITEL" => "Links",
    "DATUM" => "Vandaag: ".dag(),
    "HEADER" => "<a href='index.php'>Home</a> >> Links",
    "TITEL" => "Links",
    "INHOUD" => "blaat",
    "DOWN" => host(),
    "MENU" => menu(),
    "MENU" => $willem,       
)); 
echo $template->parse_file("grafisch.tpl"); // output parsen
?>

Nu wil ik op de plaats van de inhoud op de pagina, dus op de plaats waar nu "blaat" wordt geparst een form stukje maken. Dus diverse tekstinvoervelden en een submit knop. Dit is dus php code, maar dat kan je helaas niet zetten op de plaats van "blaat".

Tot nu toe deed ik dit altijd door gewoon een andere php te maken zonder gebruik te maken van de template, maar je begrijpt: niet echt efficiënt als je je design wilt veranderen.

Hoe los ik dit op?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
include("template.php"); // template.php includen
include ('date.php'); 
include ('menu.php');
$template = new template; // nieuwe template aanmaken 
$form = new template; // nieuwe formtemplate aanmaken 
$template->assign_vars(array( 
    "SITE_TITEL" => "Links",
    "DATUM" => "Vandaag: ".dag(),
    "HEADER" => "<a href='index.php'>Home</a> >> Links",
    "TITEL" => "Links",
    "INHOUD" => $form->parse_file("grafisch_form.tpl"), // of een andere PHPvar
    "DOWN" => host(),
    "MENU" => menu(),
    "MENU" => $willem,       
)); 
echo $template->parse_file("grafisch.tpl"); // output parsen
?>
Ik denk wel dat je vraag beter past bij /14, neen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
moozzuzz schreef op dinsdag 03 april 2007 @ 21:15:
[...]
PHP:
1
code
Ik denk wel dat je vraag beter past bij /14, neen?
Sorry, maar wat bedoel je?

Acties:
  • 0 Henk 'm!

Verwijderd

Dit is dus php code, maar dat kan je helaas niet zetten op de plaats van "blaat".
oh nee?
(ff uit m'n blote hoofd)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$blaat = "<form action=\"somefilename.php\" method=\"POST\" name=\"form\">
<input type=\"text\" name=\"invoerveld\" id=\"invoerveld\" value=\"\">
<button type=\"submit\">Submit</button>
</form>
";
$template->assign_vars(array( 
/*
heleboel vars
*/ 
    "INHOUD" => $blaat,
/*
en nog meer vars
*/     
));

Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Verwijderd schreef op dinsdag 03 april 2007 @ 21:21:
[...]
Sorry, maar wat bedoel je?
Wat dukefan bedoelt en eventueel kan je $blaat ook laten invullen door een tweede template-object.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry, dat blaat was nog van ander forum. Maar dat je gewoon een post form in een variabele kan stoppen is niet nieuw voor mij. Het gaat om
PHP:
1
2
3
4
5
6
if!($_POST[submit]){
//form gedeelte
}
else{
//send gedeelte
}

En hoe krijg je nu zoiets in een template design?

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Wat je eigenlijk wil is object georienteerd werken :) Lees je daar eens op in en verdiep je in de mogelijkheden. Je zal zien dat je het hier perfect kan gebruiken.

Je kan meerdere objectjes in elkaar hooken en deze elk een taak laten regelen en evt iets outputten, perfect voor dit systeem en je code wordt er een stuk leesbaarder (en beheersbaarder) van!

Verder: Move => /14 ?

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

Verwijderd

Nog een kleine tip: Voor het plaatsen van veel uitvoer in een variabele voor verwerking in een template kan het de moeite waard zijn de output buffer te gebruiken, dat werkt vaak overzichtelijker en sneller als andere manieren.

Natuurlijk afhankelijk van de situatie, maar kijk er eens naar als je toch bezig bent met kijken.

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Ik verplaats hem naar Programming

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb het voorlopig maar met
$res = "";
$res .= "<form...
enz.
gedaan.

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 09:34
Of je gebruikt gewoon een fatsoenlijke parser (als Smarty) die wel dat soort directives aankan? :?

Nu zit je nog steeds logica en layout met elkaar te mengen, da's juist datgene wat je wil voorkomen met templates...

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

Verwijderd

met ^^
(alleen ik ben niet zo voor smarty, maar dat is per persoon verschillend natuurlijk)
Trouwens, die oplossing van moozzuzz is mooier dan die van mij, als je met dit template systeem verder gaat.

Ook zou je inderdaad, zoals SchizoDuckie zegt, object georiënteerd kunnen (moeten) gaan werken.

dus:
Heb het voorlopig maar met
$res = "";
$res .= "<form...
enz.
gedaan.
kun je m.i. juist beter omzetten naar de oplossing van moozzuzz
Pagina: 1