Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [SMARTY] recuperare variabili

    Ciao ragazzi, ho un problemino che non so come risolvere.
    La questione è la seguente:
    utilizzo smarty come template engine.
    Ho creato 3 files : index.php, header.php e footer.php.
    Inoltre(sperando di avere fatto una cosa buona), ho usato il singleton per istanziare l'oggetto di tipo smarty.

    Ora: il file index.php esegue una semplice query.Nel caso in cui il risultato della query risultasse vuoto, setto una variabile a 1.

    Ho provato a stampare dal file header e footer.php la variabile $smarty, ma la variabile di cui sopra ($err = 1), non viene visualizzata .

    La domanda è : esiste un modo per assegnare questa variabile all'oggetto smarty in modo tale che anche il file header.php e footer.php riescano a vederlo?

    Grazie a tutti per la disponibilità
    A presto.
    E.

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    non conosco smarty ma non potresti semplicemente estendere la classe smarty aggiungendo i metodi accessori (getter e setter) per gestire $err?

  3. #3
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573

    Re: [SMARTY] recuperare variabili

    Originariamente inviato da gangiaemi
    Ciao ragazzi, ho un problemino che non so come risolvere.
    La questione è la seguente:
    utilizzo smarty come template engine
    .....
    La domanda è : esiste un modo per assegnare questa variabile all'oggetto smarty in modo tale che anche il file header.php e footer.php riescano a vederlo?
    Attualmente, perchè stai usando smarty? per la cache?

    devi usare un po' di SmartyPHP(....)
    codice:
    //nella view
    $smarty->assign('Name', 'Fred'); 
    
    //nel template
    {$Name}//<- stamperà Fred
    http://www.smarty.net/docsv2/en/api.assign

  4. #4
    Ciao, grazie per la tempestiva risposta.
    Ciò che hai scritto è giusto, per il singolo template.
    Quello che io volevo sapere è se , dati 3 template differenti : pippo.tpl, pluto.tpl, paperino.tpl,e , assegnando una variabile a pluto.tpl tramite pluto.php, è possibile poter assegnare questa variabile anche agli altri 2 tpl.

    Ho gia provato a fare come tu mi hai scritto:
    /nella view
    $smarty->assign('Name', 'Fred'); // nel file pluto.php

    //nel template
    {$Name}//<- stamperà Fred // in tutti e 3 i file *.tpl
    ma non viene stampato nulla, se non in pluto.tpl.

    Si puo fare qualcosa? un metodo, impostazioni di qualche variabile???
    Grazie ancora per il tempo che hai speso e ringrazio nuovamente tutti per la disponibilità.
    A presto.
    E.

  5. #5

    [RISOLTO]

    Ciao ragazzi,
    mi rispondo da solo

    Allora, seguendo il consiglio di longilineo ho creato dei metodi all'interno della mia classe che mi aiutassero a visualizzare il mio template, settare le variabili che mi servono e visualizzare le variabili che ho settato.
    Ho inoltre creato un metodo che prende come parametro un contenuto e lo utilizza per inserirlo automaticamente nel template.

    In questo modo, nelle mie pagine *.php devo richiamare solamente questo metodo e visualizzo tutti i template che compongono la struttura delle mie pagine.
    Riporto un esempio :

    3 filese: header.tpl , content.tpl, footer.tpl.

    il metodo si chiama : showContent($content);



    codice:
    	
    public function showContent($content){  		
    $this->getHeader(); 		
    $template_name =_WS_THEME_DIR_.'content.tpl'; 		
    $content = $this->fetch("db_smarty:{.$template_name.}");
    $this->assign('CONTENT', $content); 		
    $this->display('content.tpl');
    $this->getFooter();  
    }
    I metodi getHeader() e getFooter() eseguono delle operazioni come il settaggio dinamico dei metatitle , metakeywords e meta descriptions , e la semplice visualizzazione del footer.tpl.

    Spero che questa cosa venga utilie a qualcuno.
    Per qualsiasi cosa, sempre a disposizione.
    Ringrazio tutti quanti per la disponibilità.
    A presto.
    E.

  6. #6
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573

    Re: [RISOLTO]

    Originariamente inviato da gangiaemi
    Ciao ragazzi,
    mi rispondo da solo
    .........
    3 filese: header.tpl , content.tpl, footer.tpl.

    il metodo si chiama : showContent($content);
    codice:
    	
    public function showContent($content){  		
    $this->getHeader(); 		
    $template_name =_WS_THEME_DIR_.'content.tpl'; 		
    $content = $this->fetch("db_smarty:{.$template_name.}");
    $this->assign('CONTENT', $content); 		
    $this->display('content.tpl');
    $this->getFooter();  
    }
    I metodi getHeader() e getFooter() eseguono delle operazioni come il settaggio dinamico dei metatitle , metakeywords e meta descriptions , e la semplice visualizzazione del footer.tpl.
    Scusa, ma, a parte i metodi che valorizzano variabili in maniera automatica che c'entrano poco con il problema originale, secondo me non hai risolto granchè:
    - il metodo fetch restituisce il risultato del template, come da pagina del manuale di smarty, assegnare tale risultato ad una variabile e quindi fare il display del templete stesso è uno spreco di memoria;
    - assegnando un valore ad una variabile con il metodo assign, rende la variabile disponibile nel template di cui viene fatto il display e per tutti i file che vengono inclusi "smarty way" (cioè usando {include file="pippo.tpl"}, nel tuo caso te lo fa il fetch.
    - sono un po' arrugginito con smarty, ma se non ricordo male fetch non controlla in automatico se esiste la cache del file.

    come detto è da tempo che non uso smarty, ma mi permetto di consigliarti o di leggere meglio il manuale o di passare ad un framework MVC, perché ho sempre trovato inutile la creazione di un linguaggio simil-php per tenere separati php e html, quando il problema di fondo è, semmai, separare logica da rappresentazione.

  7. #7

    Re: Re: [RISOLTO]

    Originariamente inviato da Enoa
    come detto è da tempo che non uso smarty, ma mi permetto di consigliarti o di leggere meglio il manuale o di passare ad un framework MVC, perché ho sempre trovato inutile la creazione di un linguaggio simil-php per tenere separati php e html, quando il problema di fondo è, semmai, separare logica da rappresentazione.
    Quoto queste parole molto sagge

  8. #8
    Salve ragazzi,
    - assegnando un valore ad una variabile con il metodo assign, rende la variabile disponibile nel template di cui viene fatto il display e per tutti i file che vengono inclusi "smarty way" (cioè usando {include file="pippo.tpl"}, nel tuo caso te lo fa il fetch.
    Il problema originario era dovuto al fatto che dovevo gestire una variabile e rimandarla in qualche modo ad un file php che era stato precedentemente caricato (una variabile settata in content.php e riutilizzarla in header.php).
    Fare un semplice assign in content.php equivaleva far visualizzare quella variabile solo all'interno di content.tpl , a meno che io non avessi incluso, come giustamente tu mi spieghi, gli altri files tramite l'include di smarty, nel file content.tpl; cosa che io non voglio fare assolutamente.

    - il metodo fetch restituisce il risultato del template, come da pagina del manuale di smarty, assegnare tale risultato ad una variabile e quindi fare il display del templete stesso è uno spreco di memoria;
    Anche questo è verissimo , e ho risolto utilizzando display , facendo riferimento a questa pagina del manuale di smarty che fa esattamente al caso mio

    http://www.smarty.net/docs/en/templa...from.elsewhere

    In questo modo , riesco a gestire le variabili che mi servono , per poter modificare a mio piacimento i comportamenti dell'header , del footer e del content.
    Magari è banale, ma per quello che mi serve va benissimo
    Vi ringrazio per le dritte ; imparare nuove cose e confrontarsi fa sempre bene.
    A presto.
    E.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.