[PHP] Smarty, probleem met dynamische pagina's.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 20 juni 2004 @ 19:45:
Ik heb me gisteren een sprong in het diepe Smarty zwembad gewaard en ik kom ergens maar niet uit.

Ik heb de volgende code:

index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

require 'smarty/Smarty.class.php';

$smarty = new Smarty;

$smarty->compile_check = true;
$smarty->debugging = false;

//if($_GET['pagina'] == "") {
    
    $smarty->assign("content", include("hoofdpagina.php"));
    
//} else {
    
//  $smarty->assign("content", include($_GET['pagina']));
    
//}

$smarty->display('index.tpl');

?>


index.tpl
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<div align="center">

<table cellpadding="4" cellspacing="4" border="1" width="80%">
 <tr>
    <td colspan="2"><div align="center">Banner</div></td>
 </tr>
 <tr>
    <td width="20%">
     <tr>
        <td width="20%">
        <a href="?pagina=voorstellingen.php&selectie=nieuw">Nieuw</a><br />
        <a href="?pagina=voorstellingen.php&selectie=verwacht">Verwacht</a><br />
        <a href="?pagina=voorstellingen.php&selectie=recent">Recent</a><br /><br />
        </td>

        <td width="80%" rowspan="4" valign="top">{$content}</td>
     </tr>
     <tr>
        <form method="post" action="">
         <tr>
            <td width="20%"><input type="text" name="search_value" /></td>
         </tr>
         <tr>
            <td><input type="submit" name="search" value="Zoeken" class="normal" /></td>
         </tr>
        </form>
     </tr>
     </td>
 </tr>
 <tr>
    <td colspan="2"><div align="center">Banner</div></td>
 </tr>
</table>

</div>


hoofdpagina.php
PHP:
1
2
3
4
5
<?php

$smarty->display('hoofdpagina.tpl');

?>


hoofdpagina.tpl
code:
1
Hallo, ik ben content.


De output die wel goed staat is "1", maar waar die vandaan komt snap ik niet. En de output die hij eigenlijk moet geven staat linksboven in de hoek.

Snapt het niet :'( :)

[ Voor 30% gewijzigd door Verwijderd op 20-06-2004 21:25 ]


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

$smarty->assign("content", include("hoofdpagina.php"));

Hier include je gewoon hoofdpagina.tpl. Je kent hier de inhoud van dat bestand niet toe aan de smarty variabele content. Je zou met include of fopen de inhoud van dat bestand eerst aan een variabele toe kunnen kennen. En die variabele dan in de smarty variabele content kunnen stoppen.

[ Voor 15% gewijzigd door Brakkie op 20-06-2004 19:59 ]

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Met fopen wordt gewoon de pagina geladen van het filesystem, niet geparsed dus. Dan sta je nog nergens. Je zou in je included file een var moeten setten, in je index.php die variable global setten en dan die variable aan smarty doorgeven. Ik vind het maar een lelijke oplossing. Ik zou dan ook gaan voor Smarty's mogelijkheid om zelf php te includen.

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Brakkie schreef op 20 juni 2004 @ 19:53:
$smarty->assign("content", include("hoofdpagina.php"));

Hier include je gewoon hoofdpagina.tpl. Je kent hier de inhoud van dat bestand niet toe aan de smarty variabele content. Je zou met include of fopen de inhoud van dat bestand eerst aan een variabele toe kunnen kennen. En die variabele dan in de smarty variabele content kunnen stoppen.
Dat met fopen had ik al bedacht, maar dat gaat niet omdat ik dan gewoon de sourcecode van de pagina toeken aan de content.

Dus ik snap niet hoe ik dit moet oplossen

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Met include kan het wel.
PHP:
1
2
//test.inc
return "Wazaaap";

$var = include("test.inc");

En dan:
$smarty->assign("content", $var);

Valt hier na te lezen:
http://nl3.php.net/manual/nl/function.include.php

[ Voor 123% gewijzigd door Brakkie op 20-06-2004 20:14 ]

Systeem | Strava


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dingstje schreef op 20 juni 2004 @ 20:01:
Met fopen wordt gewoon de pagina geladen van het filesystem, niet geparsed dus. Dan sta je nog nergens. Je zou in je included file een var moeten setten, in je index.php die variable global setten en dan die variable aan smarty doorgeven. Ik vind het maar een lelijke oplossing. Ik zou dan ook gaan voor Smarty's mogelijkheid om zelf php te includen.
Daar had ik ook al aangedacht maar dan zegt Smarty:

Warning: Smarty error: file:../1 is not readable in /webspace/creative-minds.com/sites/testbak/uitloper/smarty/Smarty.class.php on line 1083

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

1 is de return value van de include.

Misschien heb je meer aan fetch
http://smarty.php.net/manual/en/api.fetch.php

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Brakkie schreef op 20 juni 2004 @ 20:06:
Met include kan het wel.
PHP:
1
2
//test.inc
echo "waaaaaaa";

$var = include("test.inc");

En dan:
$smarty->assign("content", $var);

Valt hier na te lezen:
http://nl3.php.net/manual/nl/function.include.php
iiiiiiiiiiiiiiiii wat lelijk...

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Brakkie schreef op 20 juni 2004 @ 20:06:
Met include kan het wel.
PHP:
1
2
//test.inc
echo "waaaaaaa";

$var = include("test.inc");

En dan:
$smarty->assign("content", $var);

Valt hier na te lezen:
http://nl3.php.net/manual/nl/function.include.php
Ik gebruik Include toch al, of zie ik dat nou verkeerd.. :S

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Ow klein detail. Je moet je include file een waarde laten returnen. Anders geeft ie standaard 1 terug :)


Vorige post aangepast.

[ Voor 12% gewijzigd door Brakkie op 20-06-2004 20:16 ]

Systeem | Strava


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
LuCarD schreef op 20 juni 2004 @ 20:08:
1 is de return value van de include.

Misschien heb je meer aan fetch
http://smarty.php.net/manual/en/api.fetch.php
Nope fetch gaat niet werken.

En het gebruiken van return is eigenlijk redelijk omslachtig..

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Ik vind je hele manier van het opbouwen van pagina's omslachtig. Waarom haal je de content van je pagina's gewoon uit een database.

Als je dan toch de geparsde inhoud van een file via include aan een variabele wilt toekennen zul je wel moeten returnen.

[ Voor 35% gewijzigd door Brakkie op 20-06-2004 20:34 ]

Systeem | Strava


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Brakkie schreef op 20 juni 2004 @ 20:33:
Ik vind je hele manier van het opbouwen van pagina's omslachtig. Waarom haal je de content van je pagina's gewoon uit een database.

Als je dan toch de geparsde inhoud van een file via include aan een variabele wilt toekennen zul je wel moeten returnen.
Hoezo is de opbouw omslachtig ?

Ik heb een index met daaronder de pagina's, een voordeel is dat ik, mocht ik de layout moeten veranderen dit maar eenmaal te doen.

Probleem is alleen dat ik dus niet andere pagina's weet te includen zoals eerst bij PHP kon zonder Smarty.

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Ik zie gewoon niet in waarom je nu smarty gebruikt? Het enige wat je doet is een extra stap toevoegen. ipv direct een file includen wil je eerst de geparsde inhoud van een file toekennen aan een smarty variabele. Ik zie het nut er niet van.

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
volgens mij snap jij het principe van de smarty includes niet helemaal, volg ook eens de crashcourse (op smarty.php.net) en bekijk de mogelijkheden dit kun je heel makkelijk doen met smarty includes

Icons are overrated


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Verder is Smarty (en elke andere Template-engine) net gemaakt om de layout gemakkelijk te kunnen aanpassen. Zoals hierboven al werd gezegd moet je dringend eens de Smarty manual (her)lezen.

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gedaan, en nu snap ik 't wel :). Voortaan even beter lezen dus.

[ Voor 138% gewijzigd door Verwijderd op 20-06-2004 21:25 ]


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 20 juni 2004 @ 21:25:
Gedaan, en nu snap ik 't wel :). Voortaan even beter lezen dus.
Misschien is het wel leuk om je uiteindelijke resultaat terug te geven. Dan kan de volgende persoon met een soortgelijk probleem misschien iets mee...

:Y)

Programmer - an organism that turns coffee into software.

Pagina: 1