Bitte beachten Sie, das folgende Beispiel benötigt grundlegende Programmierkenntnisse.Im folgenden wird anhand eines kleinen Beispieles gezeigt, wie man in den Formularen Daten von externen Quellen nutzen kann. Die Daten werden hier aus einer frei wählbaren Datenbank eingelesen.
Die Formulare werden mit Hilfe der Template Engine Smarty generiert. Smarty kann flexibel durch eigene Funktionen erweitert werden. Eine solche Funktion kann natürlich auch Daten für die Formulare zur Verfügung stellen.
Das PHP Code Beispiel zeigt eine Smarty Funktion, sie muss mit "smarty_function_mydata" beginnen und in einer PHP Datei mit ähnlicher Namenskonvention abgelegt werden, "function.mydata.php".
Im weiteren wird über die interne Datenbank-Klasse eine Verbindung zu einer externen Datenbank aufgebaut, eine SQL Abfrage zum einlesen der Daten ausgeführt und das Ergebnis in einer lokalen Variable kopiert. Die Ergebnis-Variable ist hier ein Array, es können also mehrere einzelne Informationen pro Datensatz an das Template übergeben werden. Zum Schluss werden die abgefragten Daten an die Template-Engine übergeben.
<?php
function smarty_function_mydata($params, &$smarty) {
// Aufbau der Datenbankverbindung (interne Datenbankklasse)
$db = new Scar4U_DB();
$dbserver = 'localhost'; // Datenbank-Server
$dbuser = 'root'; // Datenbank-Benutzer
$dbpass = ''; // Datenbank-Passwort
$dbname = 'dev_scarformmanager'; // Datenbankname
// Zur Datenbank verbinden
$db->connect('', $dbserver, $dbuser, $dbpass, $dbname, 'My Own Extension');
// Daten abfragen
$db->query('SELECT formid, formname FROM sfm_form');
// Ergebnisse in eine lokale Variable kopieren
$list = array();
while($array = $db->fetch_array()){
$list[] = $array;
}
// Ergebnis an die Template-Engine übergeben
$smarty->assign_by_ref($params['var'], $list);
}
// Sollte zur Vollständigkeit angegeben werden, wird in der Pluginübersicht ausgegeben (ACP -> Einstellungen -> Plugins)
$scar4u_smarty_plugin_info['pluginname'] = 'My Own Extension';
?>Die erstellte Funktion aus diesem Beispiel wird im Verzeichnis /sfm/acp/data/plugins/smarty/ unter dem Namen function.mydata.php abgelegt.
Weitere Informationen zur Smarty-Funktionsprogrammierung können unter folgender URL nachgelesen werden:
- http://smarty.net/manual/de/plugins.functions.php
Die eben erstellte Funktion kann in allen Templates genutzt werden.
Sie wird wie folgt angesprochen: {mydata var='meinedaten'}.
{mydata ... } ist der selbst definierte Funktionsname.
var='...' Name der Templatevariable mit den eigenen Daten.
Der Template Code Abschnitt nutzt die eigene Template Funktion, übergibt die Daten in der Variable "meinedaten" und gibt sie anschließend in Form einer Select-Box aus.
{mydata var='meinedaten'}
<select name="sfm_field[archive_4]">
{foreach from=$meinedaten item=x}
<option value={$x.formid} {if $sfm_field.archive_4==$x.formid}selected{/if}>
{$x.formname|htmlentities}
</option>
{/foreach}
</select>Weitere Informationen zur Smarty-Funktionsverwendung können unter folgenden URLs nachgelesen werden:
- http://smarty.net/manual/de/language.syntax.functions.php
- http://smarty.net/manual/de/language.function.foreach.php
- http://smarty.net/manual/de/language.function.if.php
- http://php.net/htmlentities
- Das Beispiel nutzt die interne PHP Datenbank-Klasse, selbstverständlich kann die Datenbank auch auf anderem Weg angesprochen bzw. die Daten generell auf anderen Weg bereit gestellt werden.
- Im Template wird das Eingabefeld "archive_4" genutzt, muss evt. angepasst werden.
- Gespeichert wird nur, was im value-Attribut des < option > Tags angegeben wird.