Contao Module erstellen – Backend

Nachdem ich mit der Initalisierung und der Ordnerstruktur von Contao Modulen beschäftigt habe, kann ich nun endlich zur Programmierung kommen. Zuerst will ich ein im Backend mein neues Modul sichtbar machen. Als Beispiel will ich ein Shop-Modul erstellen mit vorerst nur einer Tabelle. Beginnen wir mit der config.php im Ordner config.

Natürlich müssen wir Contao in dieser Datei irgendwie unser neues Modul bekanntmachen. Wir können das in einem global verfügbaren Array erledigten und zwar unter $GLOBAL[‚BE_MOD‘]. Dort sind alle Backend-Module von Contao definiert.

Für unser neues Shop-Modul sieht das folgendermaßen aus:

/**
 * Back end modules
 */
array_insert($GLOBALS['BE_MOD'], 2, array
(
 'shop'=>array /* Gruppe */
 (
   'customers' => array /* Modul */
   (
   // list of tables
   'tables' => array('tl_customers'),
   // backend icon
   'icon'   => 'system/modules/shop/html/images/icons/backend_module_icon.png'
   )
 )
));

Ich verwende hier bewußt keine bestehende Gruppe (wie z. B. maintenance), sondern definiere ein Gruppe „shop“. Eine Ebene tiefer findet sich das Modul customers, welches aus einer einzigen Tabelle und einem Icon besteht.

Die Tabelle selbst kann sehr komfortable erstellt werden. Wir müssen lediglich per SQL die Tabelle beschreiben, wie bereits oben abgebildet unter database.sql abspeichern und das Installationstool aufrufen. Dort werden die Änderungen direkt angezeigt und können in die Datenbank übernommen werden.

-- **********************************************************
-- *                                                        *
-- * Hinweis                                                *
-- *                                                        *
-- * Diese Datei nicht manuell in die Datenbank importieren.*
-- * Das Contao Installations-Toll verwenden!               *
-- *                                                        *
-- **********************************************************
 
--
-- Table `tl_customers`
-- 
 
-- Note: id und tstamp werden von Contao benötigt.
-- Note: Die zwei Leerzeichen nach PRIMARY KEY werden benötigt.
 
CREATE TABLE `tl_customers` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `tstamp` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  `name` VARCHAR(255) NOT NULL DEFAULT '',
  `email` VARCHAR(255) NOT NULL DEFAULT '',
  `customernumber` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  `verified` CHAR(1) NOT NULL DEFAULT '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Allerdings muß der Tabellenname mit tl_ beginnen, ansonst legt des Installationstool zwar die Tabelle in der Datenbank an, jedoch wird weiterhin die Meldung „Datenbank ist nicht aktuell“ angezeigt. Beim zweiten Klick auf die Schaltfläche „Datenbank aktualisieren“ erscheint dann eine Fehlermeldung, dass die Tabelle bereits existiert.

Nachdem wir nun unser Backend-Modul definiert und die Datentabelle erstellt haben, können wir mit der Tabellendefinition beginnen. In Contao nennt sich das Data Container Array, kurz DCA. Dort können wir festlegen, welche Felder der Tabelle wie angezeigt werden sollen, welche Aktionen zur Manipulation zur Verfügung stehen und noch einiges mehr. Das schauen wir uns jedoch im nächsten Artikel an.

4 Gedanken zu “Contao Module erstellen – Backend

  1. Pingback: Contao Module erstellen – DCA | Tobias Seckinger

  2. Falls auch andere über diese Hürde stolpern. In meinem XAMPP hat nur folgende sql Schreibweise funktioniert (Kleinschreibung):

    CREATE TABLE `tl_customers` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `tstamp` int(10) unsigned NOT NULL default ‚0‘,
    `name` varchar(255) NOT NULL default “,
    `email` varchar(255) NOT NULL default “,
    `customernumber` int(10) unsigned NOT NULL default ‚0‘,
    `verified` char(1) NOT NULL default “,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM default CHARSET=utf8;

Kommentar verfassen