Grundaufbau mit Templates
				
					Einklappen
				
			
		
	X
- 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
 juhu vieleicht kann ich dir ja nen bissel helfen!!!
 
 Also ich hatte mal das gleiche problem mit smarty! aller anfang ist schwer.
 
 ich werde jetzt nicht grossartig auf dein problem eingehen, sondern eine kleine lösung vorstellen wie ich damit um gehen würde und es auch so anwende.
 
 also ich habe das ganze in 5 php datein aufgesplitet.
 
 1.) tsystem.class.php
 2.) view.class.php
 3.) smarty.class.php <--is nur ne wrapper klasse!!!
 4.) Smarty.class.php <-- die eigentliche Smarty klasse
 5.) command.class.php
 
 So jetzt mein ansatz:
 
 1.) es wird ja standard mässig die index.php aufgerufen, die die config.inc.php und diese wiederrum die tsytem.class.php includiert.
 
 
 
 als nächstes will ich die config.inc.php betrachtenPHP-Code:<?php
 //tsystem.class.php
 
 
 
 //command.class.php holt nur die action aus dem Request.
 include ("includes/command.class.php");
 
 //view.class.php ist für die standart darstellung der seite da.
 include ("includes/view.class.php");
 
 //wrapper klasse
 include ("includes/smarty.class.php");
 
 //die eigentliche smarty klasse die man sich aus dem inet lädt
 include ("smarty/Smarty.class.php");
 
 
 class tsystem{
 
 //konstruktor werden alle objekte instanziert die ich hinterher in meiner Session benötige
 function tsystem(){
 //cmd holt sich nacher meine action aus dem request
 $this->cmd=new command();
 }
 
 //methode execute wird später aus der index.php aufgerufen
 function execute(){
 //die methode check ist eine standart methode in der klasse cmd
 $this->cmd->check();
 }
 
 }
 ?>
 
 so bis jetzt haben wir ja schon ein wenig und kommen endlich zur index.phpPHP-Code:<?php
 //config.inc.php
 
 
 
 include("includes/tsystem.class.php");
 ini_set("session.use_cookies", 1 );
 
 //startet eine sessison
 session_start();
 
 
 //falls das pbjekt SYS in der session schon existiert, nun ja da muss man dann keine neue Session starten
 if(!array_key_exists("SYS",$_SESSION)){
 $_SESSION["SYS"] = new tsystem();
 }
 
 //vereinfachung so muss man dann nur $SYS nehmen und nicht &$_SESSION['SYS'];
 $SYS = &$_SESSION["SYS"];
 ?>
 
 
 
 PHP-Code:<?php
 //index.php
 
 
 include("includes/config.inc.php");
 
 //hier starten wir die execute methode aus der tystem.class.php haben wir ja oben schon gesehen
 $SYS->execute();
 
 //erzeugen unser View Objekt kommt gleich auch noch
 $viewctrl = new tview();
 
 
 //starten die methode aus der viewklasse und übergegen ihr eine kopie der Session!!!!! sehr wichtig
 $viewctrl->execute(&$SYS);
 ?>
 
 wollen wir uns dem herzstück des kleinen konstrucktes die view.class.php anschauen
 
 PHP-Code://view.class.php
 
 
 
 
 class tview {
 
 //action variablen unten wichtig für die auswahl des workerfiles
 var $page="";
 
 //wichtig für das workerfile dort kann dann aus dem workerfile eine bestimmte methode gewählt werden
 var $action="";
 
 
 //content variabeln werden später mit den HTML code der einzelnen bereiche gefüllt
 var $content="";
 var $left_col="";
 
 
 //konstruktor muss hier nichts machen
 function tview(){}
 
 
 //execute methode wird standart mässig von der index.php aufgerufen
 function execute(&$variable){
 $this->SYSref = &$variable;
 $this->view();
 }
 
 
 
 function view(){
 
 //smarty-objekt zum anzeigen und fetchen der tpls
 $sm = &tsmarty::newSmarty();
 
 $this->page = $this->SYSref->cmd->page;
 $this->action = $this->SYSref->cmd->action;
 //WORKER includen durch die page z.b. (index.php?page=gbook) wird aus dem ordner worker die gbook.php includiert.
 //----------------------------------------------------------------------------------------------------------------
 if(file_exists("workers/".$this->page.".php")){
 include("workers/".$this->page.".php");
 }else include("workers/baustelle.php");
 //WORKER ENDE
 //----------------------------------------------------------------------------------------------------------------
 //in den workerfiles befülle ich die dynamischen elemente meiner seite in die variablen, die dann hier in das main.tpl wiederrum geaddet werden
 $sm->assign("navi", $this->navi);
 $sm->assign("content", $this->content);
 $sm->display("main.tpl");
 }// function view
 }// class view
 ?>
 
 
 die wrapper klasse smarty und die command klasse
 
 
 PHP-Code:?php
 //command.class.php
 
 class command{
 //festlegung der startpage
 var $page="home";
 var $action="show";
 
 
 function command() {
 }
 
 function check(){
 if(array_key_exists("page", $_REQUEST)){
 $this->page=$_REQUEST['page'];
 }
 if(array_key_exists("action", $_REQUEST)){
 $this->action=$_REQUEST['action'];
 }
 }
 }
 ?>
 PHP-Code:<?php
 //smarty.class.php
 
 //die klasse erzeugt nur ein smartyobjekt und gibt es wieder zurück!! nicht mehr und nicht weniger
 class smarty{
 function smarty(){}
 
 function &newSmarty(){
 $sm = new Smarty();
 return $sm;
 }
 }
 ?>
 zum abschluss noch ein beispiel workerfile dieses würde mit folgender url auf gerufen werden index.php?page=home&action=show
 
 
 PHP-Code:<?php
 //hier im workerfile kann man sich jetzt richtig austoben was den dynamischen inhalt einer seite oder auch bereiche betrifft.
 
 
 if($this->action=="show"){
 
 //standart anzeige
 $sm->assign("titel", "Home");
 $this->content=$sm->fetch("home.tpl");
 
 }
 
 ?>
 normarlerweise müsste man jetzt nur die einzelnen quelltexte hier heraus kopieren und auf den webserver schmeissen. Ich glaube das das ganze auch laufen würde!!!
 
 
 naja wenn noch fragen sein sollten kann man mich gern fragen.
 
 ich habe versucht mich jetzt hier so kurz wie möglich zuhalten. aber mit weniger komm ich leider nicht aus.
 
 ich habe das ganze auch als packet da welches ich gern zur verfügung stelle. das auch lauffähig ist und auch schon von mir mit wesentlich mehr featueres kommt.Zuletzt geändert von weissmuster; 18.05.2005, 18:19.
 Kommentar
- 
	
	
	
		
	
	
		
		
		
		
		
		
		
	
	
 ja ich hab mich mal getraut das ding jetzt auf meinem ftp als open source
 zur verfügung zu stellen 
 
 ftp://weissmuster.no-ip.com
 
 
 naja liegt nur ein file drin als blank_v0.1.zip
 
 leider sind die ganzen Klassen noch unkommentiert (sind aber auch nicht sehr kompliziert und auch nicht soviele) aber ich werde das so schnell als möglich nachholen.
 
 für erklärungen:
 
 ICQ: 147344522
 mail: weissmuster@q-dsl.de
 Kommentar
 
          
 
							
						
Kommentar