Entwicklung - PHP - Smarty Plugin für Input-Felder

PHP: Smarty Plugin für Input-Felder

manu (53)

manu

03.09.2002 23:07

Aachen

  • 876 Postings, noch 24 bis zum nächsten Level (900)

Postings: 876

Smarty Plugin für Input-Felder

Dienstag, 22. April 2008 17:20

  • 0.0/6 Votes: 0
0.0/6 Votes: 0
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:
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)
Bookmark setzen!:Zu Google Bookmark hinzufügen.Zu bloglines hinzufügen.Zu Newsgator hinzufügen.Zu FURL hinzufügen.Zu DIGG hinzufügen.Zu Webnews hinzufügen.Zu Netscape hinzufügen.Zu Yahoo MyWeb hinzufügen.Zu spurl.net hinzufügen.Zu diigo hinzufügen.Zu Newsvine hinzufügen.Zu del.icio.us hinzufügen.Zu SIMPIFY hinzufügen.Zu Mister Wong hinzufügen.Zu Linkarena hinzufügen.Zu isio.de hinzufügen.Zu Oneview hinzufügen.Zu yigg.de hinzufügen.Zu reddit hinzufügen.Zu StumbleUpon hinzufügen.Zu Slashdot hinzufügen.Zu Blinklist hinzufügen.Zu Technorati hinzufügen.Zu Blogmarks hinzufügen.Zu Blinkbits hinzufügen.Zu ma.gnolia hinzufügen.Zu smarking.com hinzufügen.Zu Netvouz hinzufügen.Zu co.mments hinzufügen.Zu Connotea hinzufügen.Zu de.lirio.us hinzufügen.

Specials

Bytefresser Specials: Anno 1404

Umfrage

Welches ist Dein Lieblings-Anno?

(152 Stimmen)

1. Ganz klar: Anno 1800!
2. Anno 2205
3. Anno 2070
4. Anno 1404
5. Anno 1701
6. Anno 1503
7. Anno 1602
8. Anno Online

Benutzer-Counter

Besucher gesamt: 1.268.897
Besucher heute: 4
Besucher gestern: 200
Max. Besucher/Tag: 1.578
Gerade online: 9
Max. online: 167
Seiten gesamt: 29.063.519
Aufrufe diese Seite: 68

Tag-Cloud

  schema     beispiel     arbeit     template-funktion     bytefresser     april     dienstag     comments     postings     schreib-     template-schnipsel     anwendung     smarty-templates     vorbereitung     purpose     smarty     bookmark     entwicklung     input-felder     edison     thomas     level     aachen     plugin     auswählen     template-engine     datei     javascript-code     signatur     funktion