30. april 2006 - 22:35Der er
9 kommentarer og 1 løsning
smarty template spørgsmål
Mit spørgsmål er direkte omkring smarty template-engine
Grundlæggende er mit problem, at jeg gerne vilk anvende en individuel cookie (i forhold til et ID, der kommer fra databasen). Problemet er, at jeg brokker sig, hvis man forsøger at bruge smartys egne variabler om man vil.....
Jo muligvis - problemet er bare, at mit ID hedder: {$firm.firmid}, men er det muligt at lave sin løkke så jeg kun får $firmid eller endnu bedre, at man inde i template-systemet, dvs. i sin tpl-fil kan skabe variabler, så jeg fx kan lave $firmid=$firm.firmid
og bagefter lave: $smarty.cookies.$firmid eq "Open"} (hvis det så virker....)
Du snupper dem selv. Jeg synes da også der skal kunne belønnes for at stille spændende spørgsmål.
Men jeg vil da godt lige diskutere betimeligheden i at aflæse en cookie på en designside. Vi har vist snakket om det før - det der med at opdele i præsentation og i de beregninger, der ligger til grund for præsentationen.
Her kunne man argumentere for at designsiden selvfølgelig skal kunne vise noget som åbent eller lukket (hvad det nu er), men at designsiden ikke skal vide hvor oplysningen om åbent eller lukket kommer fra. I dag er det en cookie - senere er det måske resultatet af en længere beregning.
Derfor ville jeg i dit tilfælde lave en almindelige smartyvariabel ovre i dit PHP, hvor du sætter den til "Open" hvis et eller andet passende er opfyldt i en cookie. Så'n cirka.
PHP: if ($_COOKIE[....]...) { $smarty->assign("menutype","Open"); } else { $smarty->assign("menutype","Closed"); }
Jeg kan godt følge dig, og jeg forsøger også til det bedste af min kunnen at adskille lagene, men en af de features der jo for så vidt er rigtig gode er det forhold, at den laver en løkke, og når den kører i løkken, så kan jeg jo ikke "komme tilbage" til min php.
Generelt så kører det jo noget i retning af
- konstanter - SQL - lav beregninger/logik - assign til smarty - smarty-template - vis
eller noget i den trinvise retning.
Men er der er bedre måde at skille lagene ad?
(Cookien anvendes så til at vise lidt detaljer om en virksomhed - uden at spørge serveren - det er jo meget rart lige at vide) :-)
Jeg kan jo også bare læse hvad du skriver. Din $firm kommer fra din foreach, og indeholder $firm.firmid, og måske andet. Så vil mit forslag være at udvide den med yderligere en $firm.menutype, som opbygges i din PHP-del. Din generelle fremgangsmåde er bestemt fin nok.
ahhhh..selvfølgelig :-) Det har du egentlig ret i.....det ville flytte noget logik tilbage i PHP-koden - det er nok egentlig vanens magt, idet jeg almindeligs bruges disse arrays direkte fra DB - uden at behandle dem med andet end et SQL-kald og så assigne dem til smarty, men jeg kan bestemt godt se pointen i det du siger.
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.