Problem mit Klasse und Template

Byte
hallo zusammen,

ich habe eine function in einer klasse und möchte diese in einem template ausgeben.

aufgerufen wird die function so
php:
1:
2:
3:
<?php include("tourneytypes/".$TourneyType.".inc.php");
$TourneyObj = new $TourneyType;
$TourneyObj->NewTourney($Stage$Name$Game$TourneyType$MaxPlayers$rules$mapiddraw); ?>

die function selber sieht so aus
php:
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:
<?php function NewTourney($Stage$Name$Game$TourneyType$MaxPlayers$rules$mapiddraw){
    global $db$n$tpl;
    if ($Stage == 1){
      $GetGameSQL $db->query("SELECT * FROM bb".$n."_tm_game WHERE gameid = '".$Game."'");
      $GetGameRow $db->fetch_array($GetGameSQL);
      $GetType $this->GetType();
      $Gamename $GetGameRow["name"];
      $MapSQL $db->query("SELECT * FROM bb".$n."_tm_maps ORDER BY mapname");
      while ($MapRow $db->fetch_array($MapSQL)){
        $Map_Options .= makeoption($MapRow["mapid"], $MapRow["mapname"]);
      }
      eval("\$Tournament_Content = \"".$tpl->get("tms_newtourney_proseries")."\";");
      eval("\$tpl->output(\"".$tpl->get("tms")."\");");
    }elseif ($Stage == 2){
      if ($MaxPlayers 16){
        $Error "Dies ist nicht die richtige Grösse für diese League. Bitte wähle AAO Pro Tournament für Anzahl Teams < 16!";
        eval("\$Tournament_Content = \"".$tpl->get("tms_error")."\";");
        eval("\$tpl->output(\"".$tpl->get("tms")."\");");
        exit;
      } 
      // Standard TeamsPerGame do not change!!!!
      $TeamsPerGame 2;
      $db->query("INSERT INTO bb".$n."_tm_tournament (name, gameid, maxplayers, status, tourneytype, rules, teamspergame, mapiddraw) VALUES ('".$Name."', ".$Game.", ".$MaxPlayers.", '1', 'aao_pro_series', '".$rules."', '".$TeamsPerGame."', '".$mapiddraw."')");
      header ("Location: tms_admin.php?action=leagues");
    } 
  } ?>

meine frage ist, wie kann ich die ausgabe über ein tamplate erreichen?
in der function wird mit eval das template "tms_newtourney_proseries" in $Tournament_Content geladen und dieses wiederum im template"tms" ausgegeben.

leider bekomme ich so keinerlei ausgabe.
mit eval("\$tpl->output(\"".$tpl->get("tms_newtourney_proseries")."\");"); direkt in der function bekomme ich eine ausgabe aber natürlich ohne das entsprechende haupt template.

grundlegend ist natürlich die frage, wie ich die abfragen aus der function in einem template ausgeben kann.

hoffe, dass ich hier hilfe bekomme. bin schon seit 2 tagen am probieren, langsam bin ich am verzweifeln.
phux
Hi

1. Warum schreibst du eine Variablenzuweisung überhaupt in eval()?

2. Natürlich wäre es generell hilfreich zu wissen, wie genau das von dir verwendete Template System funktioniert.

Was wird von $tpl->output() als Parameter erwartet?
Und was macht es damit?
Mittels $tpl->get('name') wird das Template 'name' ausgewählt? oder ausgegeben? oder in den PHP Code zurückgeliefert?

Soweit meine Fragen, bei dem bisherigen Code kann ich dir so direkt auch nicht weiterhelfen.

Mit Smarty (das verwende ich um Templates auszugeben) müsstest du einfach die benötigten Variablen mittels:
$smarty->assign('name', $wasauchimmer);
wobei $smarty ein Objekt der Klasse Smarty ist, name der Name der im Template verwendeten Variable, und $wasauchimmer eben deren Gegenstück in PHP, das an der Stelle im Template an der {$name} steht ausgegeben werden soll.
Danach noch ein
$smarty->display('templatename.tpl');
und das Template wird ausgegeben.

So, sry für die Ausschweife in Smarty, vielleicht nützt es dir ja was, wenn du schon 2 Tage dran bastelst, kannst du ja auch ne Alternative austesten großes Grinsen

Gruß phux