Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
285
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Katzenbauer
    Katzenbauer Katzenbauer ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    213
    Wie stelle ich es bei Smarty an, dass eine Variable ausgewertet anstatt ausgegeben wird. Ich hab mal in der Dokumentation nach eval gesucht, aber aus dem Ergebnis werde ich nicht schlau.

    Ich habe es so angestellt, dass ich das hier assigne:

    PHP-Code:
    $smarty->assign('otable''{section name=table loop=$tables}{$tables[table]}{/section}'); 
    und so schreibe ich das dann ins template:

    PHP-Code:
     {eval var=otable
    Leider wird dafür nur folgendes ausgegeben:
    otable
    Also der Name der Variable.

    Vielleicht wird ja jemand von euch daraus schlau:
    http://smarty.php.net/manual/de/lang...ction.eval.php
     

  2. #2
    Avatar von Funjoy
    Funjoy Funjoy ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Berlin
    Beiträge
    118
    Hallo,

    Also soweit ich weiß kann die Funktion eval ein string welcher PHP Code enthält ausführen also z.B. wenn du in smarty das so machst:
    PHP-Code:
     $smarty->assign('otable', '<?php echo "Hallo Welt" ?>' );
    nun sollte er dir beim Platzhalter otable den wert Hallo Welt ausgeben.

    Was du nun Versuchst ist ja eine smarty Funktion auszuführen und das ist mit eval nicht möglich denke ich zumindest.

    was hast du den vor vielleicht kann ich dir ja ein anderen Tipp geben?!

    MfG Funjoy
     
    Ich bin ein KLEINER Webmaster werde aber immer GRÖßER

  3. #3
    Avatar von Karl Förster
    Karl Förster Karl Förster ist offline Mitglied Platin
    Registriert seit
    Feb 2001
    Ort
    München
    Beiträge
    646
    An sich ist es auch gegen das Prinzip von Smarty bzw. eines TemplateSystems, dass du den TemplateCode selbst wieder durch PHP generierst. Ich würde je nach Verwendungszweck vielleich eher mit eine IF im Template selbst oder so arbeiten. Wenn der Inhalt z.B. dynamisch, oder in mehreren Seiten verwendet werden soll, dann würde ich den entsprechenden Teil in eine extra TemplateDatei speichern und diese dann einbinden:

    PHP-Code:
    // temp1.tpl

    {section name=table loop=$tables}{$tables[table]}{/section}



    // seite.tpl
    {include file=$otable}




    // datei.php
    <?php

    $smarty
    ->assign('otable''temp1.tpl');

    ?>
     
    MfG

    Karl Förster
    Entwicklung / Development
    Appia, Inc.


    appia.com

  4. #4
    Avatar von Katzenbauer
    Katzenbauer Katzenbauer ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Beiträge
    213
    Entschuldigung, dass ich mich bisher nicht mehr gemeldet habe, aber ich hatte bisher keine Zeit.

    So meine Vorgehensweise ist Folgende, die ich aber zu kompliziert finde, weil zu viel schwer zu verstehender Code(für only-htmler) in die Templates kommt:

    Bisher habe ich es immer so gemacht, wenn eine DatenbankTabelle bzw. mehrere Einträge durchlaufen werden müssen, dass ich im php-code für jede Spalte ein eigenes indiziertes Array erzeugt habe, welches ich dann im Template ganz einfach mit einer section Anweisung durchlaufen habe. Aber, wenn man nun eine ganze Tabelle mit vielen Spalten ausgibt, dann hat man statt eines übersichtlichen {$name} oder {$date} immer lange section Anweisungen dort stehen. Deshalb wollte ich die Sektion Anweisungen mit dem PHP-Code erstellen und nur noch als Variable assignen.

    Hier mal ein praktisches Beispiel:

    PHP-Datei:
    PHP-Code:
    while ($row mysql_fetch_array($result))
    {
        
    $tables[] = '<option value="'.$row['id'].'">'.$row['name'].'</option>';
    }
    $smarty->assign('tables'$tables); 
    Im Template steht dann statt einer einzelnen überschaubaren Variable dort eine Sektion Anweisung:
    PHP-Code:
    {section name=table loop=$tables}{$tables[table]}{/section
    Dies versteht, aber jemand, der nur html kann kaum und weiß nicht wie es es in einem neu gestalteten Template unterbringen soll. Deshalb würde ich gerne die Section Anweisung ganz einfach z.B durch ein {$tables} ersetzen. Vielleicht weiß ja jemand von euch eine Lösung für dieses Problem.
     

Ähnliche Themen

  1. Frage Smarty und die Schleifen
    Von luni22 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 29.10.08, 14:21
  2. Frage zu Smarty und DB Abfrage
    Von alex130 im Forum PHP
    Antworten: 0
    Letzter Beitrag: 09.02.08, 18:50
  3. Frage zu Smarty, wer kennt sich aus?
    Von xtratz im Forum PHP
    Antworten: 9
    Letzter Beitrag: 11.07.07, 12:55
  4. frage zu include (unterseiten) & Smarty
    Von Nerolein im Forum PHP
    Antworten: 16
    Letzter Beitrag: 05.05.07, 23:43
  5. Frage zum Templatesystem Smarty
    Von caramba12321 im Forum PHP
    Antworten: 6
    Letzter Beitrag: 24.04.06, 16:25