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. … [Leggi il resto]