[Smarty/PHP] extract

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
Hi,

ik heb me net verdiept in smarty, en nu heb ik in smarty de functie extract nodig.

deze heb ik gevonden op smarty.incutio.com.

functie ziet er alsvolgt uit:

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

/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Type:     function
 * Name:     extract
 * Purpose:  extracts an array into template variables just
 *           like the standard PHP extract() function
 * -------------------------------------------------------------
 */
function smarty_function_extract($params, &$smarty)
{
    if (empty($params["value"])) {
        $smarty->trigger_error("extract: missing 'value' parameter");
        return;
    }

    $smarty->assign($params["value"]);
}

?>


ik heb dit opgelagen als function.extract.php in de plugins map.

alleen, hoe roep ik nu deze functie op? ik heb bij de functie ook geen documentatie kunnen vinden :?

Thx

ps. het klopt toch dat je geen arrays kan gebruiken in smarty?

[ Voor 12% gewijzigd door Mark Wegener op 16-01-2003 19:11 ]


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Je roept hem op met {extract value=$array}

Maar je kan ook gewoon een array gebruiken in je template hoor... element worden gescheiden door een .

bv {$array.test} == $array['test']

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
Dit is fantastisch!

Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
Ik heb nog 2 kleine vraagjes.

1) is het (uberhaupt wel de bedoeling dat je dit in een template verwerkt) mogelijk om dit in een template te verwerken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    $cds = explode("\n\r\n", $disc['tracks']);

    for($i = 0; $i < count($cds); $i++) {

        echo "<b>Disc: ". ($i + 1) ."</b><br />";

        $tracks = explode("\n", $cds[$i]);

        for($t = 0; $t < count($tracks); $t++) {

            printf('%02d', ($t + 1));
            echo " - ". $tracks[$t] ."<br />\n";
        }
    }


2) hoe moet ik te werk gaan als ik een menu template in een pagina wil includen, terwijl er variable uit een database gehaald moeten worden om het menu te maken. Moet ik dan in iedere php pagina waar in de template zo'n menu wordt geinclude die variable assignen?

Acties:
  • 0 Henk 'm!

Verwijderd

1)
Nee dit is dus _NIET_ de bedoeling van een template. De bedoeling van een template is om de code van je programma (in dit geval php) apart te houden van je GUI (hier HTML). Zodat je makkelijk je GUI aan kan passen, zonder je hele code om te moeten gooien / door moet spitten.
2)
Er zijn hier 2 mogelijkheden voor:
De eerste geef je zelf al aan --> een template maken voor het menu en in elke pagina de variabele uit je db halen en assignen in je template.
De tweede is om dit menu gedeelte statisch te maken, mocht de data niet vaak veranderen, dan kun je er voor kiezen om een keer per dag een html versie van je menu te maken (dus met je data uit je db) en die overal neer te zetten, ipv de template.

Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
1) Maar goed, dit stukje moet toch weergegeven worden, hoe moet ik dat dan doen?
de enige mogelijkheid die ik zie is eigenlijk {php} tags gebruiken in de template, maar dan kun je niet echt spreken van een scheiding tussen PHP en GUI.
2) Thanks!

[ Voor 3% gewijzigd door Mark Wegener op 17-01-2003 00:19 ]


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Martin.Duane schreef op 17 January 2003 @ 00:12:
1) Maar goed, dit stukje moet toch weergegeven worden, hoe moet ik dat dan doen?
de enige mogelijkheid die ik zie is eigenlijk {php} tags gebruiken in de template, maar dan kun je niet echt spreken van een scheiding tussen progamma en GUI.
2) Thanks!
{php} heb ik nog noooooit moeten gebruiken en zal ik ook nooit gebruiken, dat hoort niet thuis in de template.

Je kan dus twee dingen doen.
1/ Je maakt een plugin die de explode voor je uit voert
of
2/ Je zorgt er voor dat je de data beter verwerkt en dan door geeft bijv. een 3d array

Programmer - an organism that turns coffee into software.

Pagina: 1