Newsgroup: it.comp.www.php
Titolo: Problema smarty

ciao a tutti,
ho la necesità di studiare a fondo un template engine e, vista la sua 
potenza ho deciso di utilizzare smarty.
Ho scaricato la documentazione e iniziato ad installarlo in modalità 
standard e finquà nuessun problema. funziona correttamente.
Ora, dovendolo utilizzare in un progetto ho la necessità di inserire le 
varie classi e cartelle temporanee in apposite folders e quà iniziano i 
dolori nel senso che nel momento in cui inserisco le classiche cartelle 
"templates_c, cache e config" in una cartella diversa da quella di primo 
livello dopo dalla root non va pià niente.
Mi spiego meglio:
Root
- template
-- modules
--- Smarty
---- .............
-- cache
-- config
-- templates_c
* Funziona a meraviglia *
se invece inserisco le cartelle così:
Root
- template
-- modules
--- Smarty
---- .............
-- template_eng
--- cache
--- config
--- templates_c
* non funziona più nulla *... non mi trova la cartella templates_c
Fatal error: Smarty error: the $compile_dir 'templates_c' does not 
exist, or is not a directory. in 
D:\WWW\template\modules\Smarty\libs\Smarty.class.php on line 1088
Ovviamente vado a modificare il percorso assoluto nel file di config....
### inc_template.php ###
require($_SERVER['DOCUMENT_ROOT'].'/template/modules/Smarty/libs/Smarty.class.php');
class open_template extends smarty
{
     function open_template()
     {
         $smarty = new Smarty();
         $smarty->template_dir = './templates';
         $smarty->compile_dir = 
$_SERVER['DOCUMENT_ROOT'].'/template/template_eng/templates_c';
         $smarty->cache_dir = 
$_SERVER['DOCUMENT_ROOT'].'/template/template_eng/cache';
         $smarty->config_dir = 
$_SERVER['DOCUMENT_ROOT'].'/template/template_eng/config';
     }
}
### index.php ###
require($_SERVER['DOCUMENT_ROOT'].'/template/modules/inc_template.php');
     $smarty = new open_template();
         for ($i = 0; $i<20; $i++)
         {
         $echo .=  "i vale $i<br />";
         }
     $smarty->assign('logo', 'ciao - '.$echo);
     $smarty->display('index.tpl');
Detto sinceramente non capisco il motivo per cui non funzioni, ho 
cercato in giro ma non ho trovato nulla a riguardo.
spero che qualcuno di voi sappia aiutarmi altrimenti non riesco ad 
andarcene a capo!
Grazie
-- 
Saluti
Web Inside

     }
Io credo che l'errore sia da attribuire alla classe che crei.
Dovresti far riferimento al costruttore di Smarty, altrimenti chimando
new open_template non credo che ti restituisca un pggetto di quella classe.
Prova ad usare questo costruttore:
class Open_template extends Smarty {
    function Open_template() {
		$this->Smarty();
		$this->template_dir = TEMPL_DIR.'templates/';
		$this->compile_dir = TEMPL_DIR.'templates_c/';
		$this->config_dir = TEMPL_DIR.'configs/';
		$this->cache_dir = TEMPL_DIR.'cache/';
 
		$this->caching = false;
    }
}
TEMPL_DIR è una costante che contiene un path, ma puoi metterlo come 
vuoi, purchè sia valido.
Fai una prova verificando che template_dir, compile_dir, config_dir e 
cache_dir siano percorsi validi.
Ciao, Luigi

 Prova ad usare questo costruttore:
funzionaaaaaaaaaaaaaaa!!!
grazie mille, avevi ragione tu!!!
sono in debito!
-- 
Saluti
Web Inside