Avatar billede lakana Nybegynder
29. marts 2006 - 22:00 Der er 11 kommentarer

Smarty.php.net

Hvis jeg har smartys templatesystem og jeg vil udskrive noget fra en funktion som ligger i en klasse inde i en template fil.

Hvordan skal jeg så gøre det?
Avatar billede erikjacobsen Ekspert
29. marts 2006 - 22:06 #1
Det lyder ikke særlig sundt at have PHP-kode inde i template-fil - hvis jeg forstår dig korrekt.
Men hvis jeg forstår dig korrekt, så kan du godt - men sikke et hack (jeg ved det for jeg har eet sted, hvor det lige er den nemmeste løsning, host, host).

Du har kaldt din smarty-variabel et eller andet da du oprettede den, lad os sige: $smarty=new ....
Så kan du (så vidt jeg lige husker):

{php}
  global $smarty;
  $smarty->noget = kalddinfunktion();
{/php}

og så bare bruge den:  {$noget}
Avatar billede lakana Nybegynder
29. marts 2006 - 22:11 #2
Jeg ville nu helst gøre brug af deres smarte if-sætninger hvis det kan lade sig gøre

Man kan jo sagtens skrive "{if min_funktion}"
Avatar billede erikjacobsen Ekspert
29. marts 2006 - 22:15 #3
Det kommer an på hvad du skal, såmænd. Du "må" ikke bruge en  {if}  til andet end udseende/design/formattering - ellers skal det ordnes i PHP-koden. Måske du skal skrive din egen Smarty-dims - jeg har f.eks. {kasse}...{/kasse}, der laver en, øh, ja, kasse ;)

Prøv at forklare hvad du skal bruge det til.
Avatar billede lakana Nybegynder
29. marts 2006 - 22:23 #4
Skal tjekke om man er logget ind
Avatar billede erikjacobsen Ekspert
29. marts 2006 - 22:25 #5
Det er vel ikke templaten, der skal tjekke om man er logget ind. Det ville jeg gøre i PHP-koden, og så enten vælge template afhængig om man er eller ikke er logget ind, eller sætte en almindelig Smarty-variabel, som template så kan tjekke på (det sidste gør jeg faktisk et sted *g*)
Avatar billede erikjacobsen Ekspert
29. marts 2006 - 22:29 #6
I PHP filen:

    $user="";
    if (isset($_SESSION['user'])) {
      $user=$_SESSION['user'];
    }

og i template-filen:

    {if $user eq "admin"}
    ....
    {/if}
Avatar billede lakana Nybegynder
29. marts 2006 - 23:02 #7
Kan det da ikke lade sig gøre at hente fra en klasse i en templatefil?
Avatar billede erikjacobsen Ekspert
29. marts 2006 - 23:06 #8
Jo, som jeg har skitseret, så kan du putte hvad som helst PHP kode i {php}...{/php}, men det betyder jo ikke at man skal gøre. Hele ideen med smarte template-systemer er at holde forretningslogikken helt adskilt fra præsentationen.

(og her vil skarpe øjne se, at det har jeg ikke helt fået gjort i koden fra 22:29:01, men tilgiv mig, det er lidt gammel kode...)
Avatar billede lakana Nybegynder
29. marts 2006 - 23:09 #9
Det er bare kedeligt at skulle smide den kode ind i samtlige filer på mit site fremfor bare at have det i en templatefil
Avatar billede erikjacobsen Ekspert
29. marts 2006 - 23:12 #10
Kedeligt ... hvem siger, at det skal være sjovt at programmere. Du kan jo se det på flere måder:
1) Du skulle have tænkt dig om fra starten
2) Det var måske en god anledning til at lave om på dit system
3) Man kan få meget hjælp af includefiler, så man kun skal skrive selve koden selv
4) Man skal måske ikke bruge et template-system, hvis man ikke forstår hvorfor
Avatar billede lakana Nybegynder
09. august 2011 - 12:17 #11
skriv et svar erikjacobsen
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester