0
Feb 13 2011

Funzione “input” per Smarty

Ho creato una funzione per creare in automatico degli input su smarty, di tutti i tipi.

Forse quello più incompleto è il checkbox, che però per il momento non mi risulta utile cambiare.

Un’altra caratteristica di questa funzione è quella di fissare un value se presente in $_POST o in $_REQUEST ad esclusione dell’input type="password".

Il codice PHP è:

function smarty_tplinput($params, &$smarty) {

	$name=wp_specialchars(isset($params['name']) ? $params['name'] : '');
	$type=wp_specialchars(isset($params['type']) ? $params['type'] : 'text');
	$other=empty($params['other']) ? '' : ' '.$params['other'];

	if(isset($params['noautocompile'])) $params['autocompile']=false;
	if(!isset($params['autocompile']) && $type!='password') $params['autocompile']=true;
	elseif(!isset($params['autocompile'])) $params['autocompile']=false;

	$value='';
	if(!empty($params['value'])) {
		$value=wp_specialchars($params['value']);
	} elseif($type=='file') {
	} elseif($params['autocompile']==false) {
	} else {
		if(!empty($_POST[$name])) $value=wp_specialchars($_POST[$name]);
		elseif(!empty($_REQUEST[$name])) $value=wp_specialchars($_REQUEST[$name]);
	}

	$checked='';
	if(isset($params['checked'])) {
		$checked=$params['checked']==true ? ' checked="checked"' : '';
	} elseif($type=='checkbox') {
		$checked=$value=='on' ? ' checked="checked"' : '';
		$value='';
	} elseif($type=='radio') {
		if(!empty($_POST[$name])) $checked=$_POST[$name]==$value;
		elseif(!empty($_REQUEST[$name])) $checked=$_REQUEST[$name]==$value;
		$checked=$checked ? ' checked="checked"' : '';
	}

	switch($type) {
		case 'textarea':
			echo "<textarea{$other} name="{$name}" id="{$name}">n{$value}</textarea>";
			break;
		default:
			$value=empty($value) ? '' : " value="{$value}"";
			echo "<input type="{$type}" name="{$name}" id="{$name}"{$value}{$checked}{$other} />";
			break;
	}

}
$smarty->registerPlugin('function', 'input', 'smarty_tplinput');

È fatta per smarty 3 ma con qualche piccolo cambiamento dovrebbe essere compatibile anche con smarty 2.

I parametri sono name, type (di default text), other (per mettere altri parametri al tag.

Poi esistono i parametri value (per fissare l’attributo value) o checked (da usare con i checkbox e con i radio).

In assenza di questi si può modificare il value con gli attributi autocompile (true di default per tutti gli input tranne per type="password") o con noautocompile (alias per autocompile=false).

La funzione è rilasciata sotto il pubblico dominio.

Update: mi sono accorto che in realtà ho usato una funzione di wordpress per sbaglio: wp_specialchars.

Se vi dà errore, usate anche questo codice:

function wp_specialchars($str) {
	return htmlentities($str, ENT_QUOTES, 'UTF-8');
}

Aggiungi un commento

Completa la form sottostante per aggiungere un commento

CAPTCHA
Scarica il CAPTCHA in wav.