Wie kann ich Daten in einem Addon als Tabelle ausgeben und die einzelen Datensätze bearbeiten?
Wie kann ich Daten in einem Addon als Tabelle ausgeben und die einzelen Datensätze bearbeiten?
Über rex_list und rex_form können Inhalte aus Datenbank-Tabellen ausgegeben und über ein Formular verarbeitet werden. Im folgenden Beispiel soll die Verwendung dieser beiden Klassen einen Einstieg zeigen.
Folgende Zeilen werden in der Datei pages/index.inc.php erstellt.
<?php
$debug = false;
$list = new rex_list('SELECT id, vorname, nachname, firma, status FROM rex_addon_testaddon',10000, '', $debug);
$list->show();
?>
Hier wird eine Tabelle ausgegeben, die über mittels eines mySQL-Selects alle enthaltenen Datensätze ausgibt.
Die Tabellenüberschriften entsprechen dabei den Spaltennamen aus dem SELECT.
Über die Funktion setColumnLabel können Tabellenüberschriften konvertiert werden:
//setColumnLabel('spalte', "Bezeichnung für Spalte");
$list->setColumnLabel('vorname', "Vorname");
Für die Bearbeitung eines Datensatzes kann ein Spaltenwert (Spalte vorname) als Link ausgeben werden. Dabei werden zwei Parameter übergeben (func=edit und id=Wert Spalte id):
$list->setColumnParams('vorname', array('func' => 'edit', 'id' => '###id###'));
Über addColumn() können weitere Spalten an die Ausgaben der Tabelle gefügt werden. Hier wird in die neue Spalte ein Bild eingefügt und verlinkt.
<?php
$debug = false;
$list = new rex_list('SELECT id, vorname, nachname, firma, status FROM rex_addon_testaddon',10000, '', $debug);
//Spaltenüberschriften konvertieren
$list->setColumnLabel('id', "ID");
$list->setColumnLabel('vorname', "Vorname");
$list->setColumnLabel('nachname', "Name");
$list->setColumnLabel('firma', "Firma");
$list->setColumnLabel('status', "Status");
//Spalte mit Icon und Link hinzufügen
$imgHeader = '<a href="'. $list->getUrl(array('func' => 'add')) .'"><img src="media/document_plus.gif" alt="add" title="add" /></a>';
$list->addColumn($imgHeader,'<img src="media/document.gif" alt="Details" title="Details" />', 0, array('<th class="rex-icon">###VALUE###</th>','<td class="rex-icon">###VALUE###</td>'));
$list->setColumnParams ( $imgHeader, array('func' => 'edit', 'id' => '###id###') );
//Link auf Spalte, Übergabe Parameter func und id = Wert Spalte id
$list->setColumnParams('vorname', array('func' => 'edit', 'id' => '###id###'));
//Ausgabe
$list->show();
?>
Mit rex_form kann ein Formular erzeugt werden, dessen Elemente mit den Werten eines Datensatzes gefüllt werden können.
rex_form($tableName, $fieldset, $whereCondition, $method = 'post', $debug = false)
Die Formularelemente können über Funktionen wie
ausgegeben/definiert werden.
Über $whereCondition kann auf spezielle Datenstätze zugegriffen werden
/*
Formular mit SELECT auf Tabelle rex_addon_testaddon erzeugen
Datensatz lesen, dessen Spalten-Wert $id ist
Formular wird per POST versand
*/
$form = rex_form::factory("rex_addon_testaddon", "Details", "id=".$id, 'post', $debug);
//Textfeld mit Spalten-Wert vorname und Label erstellen
$field = &$form->addTextField('vorname');
$field->setLabel("Vorname");
//Textfeld mit Spalten-Wert nachname und Label erstellen
$field = &$form->addTextField('nachname');
$field->setLabel("Nachname");
//Textfeld mit Spalten-Wert firma und Label erstellen
$field = &$form->addTextField('firma');
$field->setLabel("Firma");
//Auswahlliste mit 2 Einträgen für die Spalte status
$field =& $form->addSelectField('status');
$field->setLabel("Status");
$select =& $field->getSelect();
$select->setSize(1);
$select->addOption("Online",1 );
$select->addOption("Offline", 0 );
$select->setAttribute('style','width:50%');
if($func == 'edit') $form->addParam('id', $id);
//rex_form ausgeben
$form->show();
Am Ende des Formulars werden drei Schalftlächen ausgeben: Speichern, Übernehmen, Löschen.
<?php
$func = rex_request('func', 'string');
$id = rex_request('id', 'int');
$debug = true;
if ($func == ''){
$list = new rex_list('SELECT id, vorname, nachname, firma, status FROM rex_addon_testaddon',10000, '', $debug);
//Spaltenüberschriften konvertieren
$list->setColumnLabel('id', "ID");
$list->setColumnLabel('vorname', "Vorname");
$list->setColumnLabel('nachname', "Name");
$list->setColumnLabel('firma', "Firma");
$list->setColumnLabel('status', "Status");
//Spalte mit Icon und Link hinzufügen
$imgHeader = '<a href="'. $list->getUrl(array('func' => 'add')) .'"><img src="media/document_plus.gif" alt="add" title="add" /></a>';
$list->addColumn($imgHeader,'<img src="media/document.gif" alt="Details" title="Details" />', 0, array('<th class="rex-icon">###VALUE###</th>','<td class="rex-icon">###VALUE###</td>'));
$list->setColumnParams ( $imgHeader, array('func' => 'edit', 'id' => '###id###') );
//Link auf Spalte, Übergabe Parameter func und id = Wert Spalte id
$list->setColumnParams('vorname', array('func' => 'edit', 'id' => '###id###'));
//Ausgabe
$list->show();
}elseif($func == 'edit'){
$form = rex_form::factory("rex_addon_testaddon", "Details", "id=".$id, 'post', $debug);
$field = &$form->addTextField('vorname');
$field->setLabel("Vorname");
$field = &$form->addTextField('nachname');
$field->setLabel("Nachname");
$field = &$form->addTextField('firma');
$field->setLabel("Firma");
$field =& $form->addSelectField('status');
$field->setLabel("Status");
$select =& $field->getSelect();
$select->setSize(1);
$select->addOption("Online",1 );
$select->addOption("Offline", 0 );
$select->setAttribute('style','width:50%');
if($func == 'edit') $form->addParam('id', $id);
$form->show();
}
?>