Smarty Plugin für Input-Felder
Dienstag, 22. April 2008 17:20
Wer mit der Smarty Template-Engine arbeitet kann sich leicht seine eigenen Plugins für wiederkehrende Template-Schnipsel schreiben.
Als Beispiel habe ich eine Template-Funktion genommen, die ein Input-Feld generiert.
Ich hatte vor längerer Zeit diese Funktion geschrieben, da in der damaligen Anwendung viele Input-Felder mit langem Javascript-Code eingesetzt wurden. Das Plugin hat dort Arbeit gespart und Schreib- und Flüchtigkeitsfehler waren passé.
Den Javascript-Code habe ich aber hier zwecks Übersichtlichkeit entfernt.
Zur Vorbereitung:
Die Template-Funktionen wird in eine Datei geschrieben, die folgendermaßen benannt werden muss:
function.[name].php - also beispielsweise wie in meinem Fall function.myinput.php.
Auch der Name der eigentlichen Funktion folgt diesem Schema:
smarty_function_[name] (also im Beispiel smarty_function_myinput).
Meine Funktion sieht nun so aus:
Sobald diese Datei im Smarty-Plugins-Ordner abgespeichert wurde, kann man die Funktion nun folgendermaßen in seinen Smarty-Templates nutzen:
{myinput type="text" value="0" maxlength="3" name="percent" class="myInput"}
Comments sind wie immer welcome.
Als Beispiel habe ich eine Template-Funktion genommen, die ein Input-Feld generiert.
Ich hatte vor längerer Zeit diese Funktion geschrieben, da in der damaligen Anwendung viele Input-Felder mit langem Javascript-Code eingesetzt wurden. Das Plugin hat dort Arbeit gespart und Schreib- und Flüchtigkeitsfehler waren passé.
Den Javascript-Code habe ich aber hier zwecks Übersichtlichkeit entfernt.
Zur Vorbereitung:
Die Template-Funktionen wird in eine Datei geschrieben, die folgendermaßen benannt werden muss:
function.[name].php - also beispielsweise wie in meinem Fall function.myinput.php.
Auch der Name der eigentlichen Funktion folgt diesem Schema:
smarty_function_[name] (also im Beispiel smarty_function_myinput).
Meine Funktion sieht nun so aus:
PHP: (Auswählen)
<?
/*
* Smarty plugin
* -------------------------------------------------------------
* File: function.myinput.php
* Type: function
* Name: myinput
* Purpose: generates input field
* -------------------------------------------------------------
*/
function smarty_function_myinput($aParams, &$oSmarty) {
$sName = ' name="'. $aParams['name'] .'" id="'. (isset($aParams['id']) ? $aParams['id'] : $aParams['name']) .'"';
$sValue = ' value="'. (isset($aParams['value']) ? $aParams['value'] : '') .'"';
$sClass = ' class="'. (isset($aParams['class']) ? $aParams['class'] : 'input') .'"';
$sMaxLength = (isset($aParams['maxlength']) ? ' maxlength="'. $aParams['maxlength'] .'" size="'. $aParams['maxlength'] .'"' : '');
$sReturn = '<input type="'. $aParams['type'] .'"';
$sReturn .= $sName;
$sReturn .= $sValue;
$sReturn .= $sClass;
$sReturn .= $sMaxLength;
$sReturn .= ' />'."\n";
return $sReturn;
}
?>
Sobald diese Datei im Smarty-Plugins-Ordner abgespeichert wurde, kann man die Funktion nun folgendermaßen in seinen Smarty-Templates nutzen:
{myinput type="text" value="0" maxlength="3" name="percent" class="myInput"}
Comments sind wie immer welcome.
Signatur:\\\"I have not failed. I\\\'ve just found 10,000 ways that won\\\'t work.\\\" - Thomas Alva Edison (1847-1931)