Articoli correlati ‘esempio’

How-to – Spedire una mail con flash/php – Download esempio Form Flash/php

24 marzo 2009

Da poco mi è capitato di dover fare un modulo di richiesta informazioni in flash il quale doveva poi essere spedito via mail tramite php.

Senza molte spiegazioni posto il sorgente del formulario con lo script php allegato (compreso di classi per la spedizione della posta in formato corretto) flashphpform . Lo script esegue solo un breve controllo se alcuni campi sono compilati e se la mail è inserita, al momento non ho avuto il tempo di sistemare i vari controlli di sintassi.

Più avanti posterò un nuovo file più completo.

Buon lavoro ;)

Smarty Template Engine – Lezione 2 – Uso dei plugins

12 ottobre 2008

Smarty in pratica è diviso in 2 cartelle di files. La prima è il “core” (cuore) dell’applicazione che ci genera il template e l’altra cartella contiene tutte le funzioni secondarie che possiamo integrare o modificare a nostro piacimento. Questo è un grande punto di forza di questo sistema di templating, infatti possiamo aggiungere quante funzioni o se vogliamo chiamarli plugins che vogliamo.

Ora vedremo come fare a richiamare una funzione.

Supponiamo di voler stampare un’immagine sul nostro template. L’unica cosa che andremo a scrivere sul nostro codice php:

<?php
//includo il file con il core dell'applicazione
require_once('Smarty/libs/Smarty.class.php');
 
//setto la lingua come parametro (esempio di variabile che mi fà cambiare le immagini dei templates)
if(empty($_SESSION['lang']) && empty($_GET['lang']))
	if(empty($param['lang']))
		$lang='ita';
	else
		$lang=$_GET['lang'];
else
	$lang=$_SESSION['lang'];
 
//setto una array globale che contierrà tutte le variabili da assegnare al template, questo per praticità nel codice
$T_VARS = array();
 
//a questo punto non mi resta altro che inizializzare il template engine e configurarlo per le mie esigenze
//inizializzo la  classe smarty
$t = new Smarty;
 
//setto la cartella da dove pescare i miei template
$t->template_dir = dirname(__file__).'/templates-'.$lang.'/main/';
 
//setto la cartella dove il template engine dovrà salvare i templates compilati
$t->compile_dir = dirname(__file__).'/templates_c/'.$lang.'/';
 
//setto il delimitatore sinistroe destro che per comodità di sviluppo in fase di progettazione con dreamweaver lo imposto come apertura tag php
 
$t->left_delimiter = "<?";
$t->right_delimiter = "?>";
 
//assegno l'immagine che mi interessa
$T_VARS['image']="prova.jpg";
 
//assegno l'array globale delle variabili
$t->assign('T',$T_VARS);
 
//visaulizzo il template (che risiederà dentro la cartella impostata con la variabile $t->template_dir)
$t->display('struttura.html');
 
// ora sarà visualizzato il template struttura.html con la possibilità sul template di accedere a tutti gli elementi dell'array $T_VARS ma sul template questo array si chiamerà $T in quanto ho assegnato $T_VARS al nome di variabile T .
?>

e lato template avremo :

<?html_image file=$T.image?>

In questo modo diciamo al “core” di smarty di andare a pescare il plugin html_image. Il plugin non è altro che una funzione chiamata con questa sintassi :
function smarty_function_html_image($params, &$smarty)
ed il file che la contiene deve avere la sintassi : function.html_image.php

Il che significa che noi possiamo creare quanti plugins vogliamo rispettando la sintassi del nome della funzione e del nome del file che contiene la funzione. Per esempio se dovessimo cambiare il plugin che genera il codice di inserimento dell’immagine possiamo creare un nuovo plugin richiamabile dal template tramite la parola chiave html_image_pers.

Chiameremo dunque il file function.html_image_pers.php e all’interno creeremo una funzione chiamata smarty_function_html_image_pers($params, &$smarty). I parametri passati alla funzione sono obbligatori in quanto il parametro $params passa alla funzione sotto forma di array tutti i parametri impostati sul template (come fossero parametri di un tag html) e il parametro &$smarty passa la referenza dell’istanza di smarty.

A questo punto con i valori dei parametri richiesti ed impostati lato template possiamo generare tramite questa funzione l’output che vogliamo sul nostro template. Infatti Smarty andrà semplicemente a sostituire il valore tornato da questa funzione al posto del tag immesso sull’html del template.

Smarty template engine – Lezione 1

10 settembre 2008

Smarty è secondo il mio parere il miglior template engine per php. Il template engine è gratuito e lo scaricate a questo indirizzo Download Smarty Template Engine.

A questo punto siamo pronti per la prima lezione di come installare ed usare Smarty.

Una volta scaricato il file zip lo decomprimiamo e rinominiamo la cartella con un nome a piacimento ad esempio Smarty.

Apriamo la cartella e vedremo una lista di cartelle e files, per il funzionamento è necessaria solo la cartella libs.

A questo punto dovremmo tener presente che a Smarty servono 2 cartelle, una nella quale salvare i templates da noi creati ed una nella quale andare a salvare i templates compilati da Smarty stesso.
Creiamo quindi le nostre 2 cartelle (templates e templates_c) dove la seconda cartella stà per templates compilati.
Vi anticipo già che ho riscontrato un baco nella compilazione quindi se abbiamo dei templates che si riferiscono e immagini diverse a seconda di qualche parametro dinamico sarà opportuno creare una struttura di directory da riprodurre a specchio nelle 2 directory appena create.

Es. abbiamo un applicazione

<?php
//includo il file con il core dell'applicazione
require_once('Smarty/libs/Smarty.class.php');
 
//setto la lingua come parametro (esempio di variabile che mi fa cambiare le immagini dei templates)
if(empty($_SESSION['lang']) && empty($_GET['lang']))
	if(empty($param['lang']))
		$lang='ita';
	else
		$lang=$_GET['lang'];
else
	$lang=$_SESSION['lang'];
 
//setto una array globale che contierrà tutte le variabili da assegnare al template, questo per praticità nel codice
$T_VARS = array();
 
//a questo punto non mi resta altro che inizializzare il template engine e configurarlo per le mie esigenze
//inizializzo la  classe smarty
$t = new Smarty;
 
//setto la cartella da dove pescare i miei template
$t->template_dir = dirname(__file__).'/templates-'.$lang.'/main/';
 
//setto la cartella dove il template engine dovrà salvare i templates compilati
$t->compile_dir = dirname(__file__).'/templates_c/'.$lang.'/';
 
//setto il delimitatore sinistro che per comodità di sviluppo in fase di progettazione con dreamweaver lo imposto come apertura tag php
$t->left_delimiter = "<?";
//e il delimitatore destro
 
$t->right_delimiter = "?>";
 
//assegno l'array globale delle variabili
$t->assign('T',$T_VARS);
 
//visaulizzo il template (che risiederà dentro la cartella impostata con la variabile $t-&gt;template_dir)
$t->display('struttura.html');
 
// ora sarà visualizzato il template struttura.html con la possibilità sul template di accedere a tutti gli elementi dell'array $T_VARS ma sul template questo array si chiamerà $T in quanto ho assegnato $T_VARS al nome di variabile T .
?>

In questa piccola applicazione abbiamo potuto vedere come utilizzare questo template engine lato php.
Possiamo subito notare che è facile e sopratutto ci sono pochissime righe di codice da scrivere, cosa molto importante per separare il codice php dalla sua visualizzazione.
Notiamo il fatto che è stata introdotta anche la variabile $lang. Infatti, se noi volessimo distinguere i templates per 2 lingue come italiano ed inglese, cosa che capita molto facilmente, dovremmo necessariamente creare 2 cartelle diverse sia per i templates originali che per quelli compilati. In questo modo i templates in italiano avranno quasi sicuramente delle immagini linkate con delle scritte in italiano e punteranno alle immagini giuste e quelli in inglese saranno comunque corretti.

Ora passiamo a come far visualizzare qualunque dato che sia inserito nel nostro Array $T_VARS.
Apriamo il file di template ’struttura.html’ :

<?include file=$T.page?>

Vediamo sopra come l’istruzione Smarty inizi con <? e finisca con ?> ovvero i delimitatori che abbiamo fissato prima nel file php.
L’array in smarty è accessibile tramite il punto

Infatti all’istruzione include passiamo il parametro file con valore $T.page (pagina da includere) . Invece di includere una pagina potremmo semplicemente stampare un valore:

<?$T.valore?>

fare un ciclo:

<?foreach from=$T.myArray item=$foo?>
	<li><?$foo.valore?></li>
<?/foreach?>

o molto altro ancora.
Più avanti vedremo come fare operazioni più complesse.