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)
				
	































 Erstellung: 0.04912s 