Der Bereich Shopware Labs ist die Plattform für alle Entwickler. Hier findet man technische Dokumentationen und zahlreiche Tipps und Tricks rund um das Thema Programmieren. In dieser Rubrik stellen außerdem die Entwickler der shopware AG neue und experimentelle Lösungsansätze vor. Neue Funktionen, die in dieser Rubrik bereitgestellt werden, sind teilweise auch für zukünftige Releases geplant. Die Funktionen können dann ohne Programmierkenntnisse zukünftig direkt im Shopware Backend konfiguriert werden oder werden über Plugins bereitgestellt. Informationen über neue, geplante Funktionen finden Sie in unserer Roadmap.
Bitte beachten Sie, dass die hier bereitgestellten Lösungsansätze nicht offiziell supportet werden und nur eingebaut werden sollten, sofern Sie über das entsprechende, technische Wissen verfügen.
Framework-Komponenten 3.5.0
0 KommentareInhaltsverzeichnis
Allgemein
Diese Übersicht wird kontinuirlich erweitert.
Datum der letzten Aktualisierung: 10.08.2010
Hier stellen wir Ihnen die neuen Framework-Komponenten von Shopware 3.5.0 / Enlight vor.
Weiterführende Artikel
Komponenten
Datenbank-Layer
Das neue Enlight_Components_Db Objekt ersetzt die bestehende AdoDB-Anbindung. Um eine Kompatibilität zu der bisherigen Syntax herzustellen, wurde ein Mapper integriert. Dieser sorgt dafür, dass die alten Methoden, wie z.B. $this->sSYSTEM->sDB_CONNECTION->GetAll(..), weiterhin funktionieren.
Das Enlight_Components_Db Objekt basiert auf Zend_Db.
Unterklassen:
- Enlight_Components_Db_Table < Zend_Db_Table
- Enlight_Components_Db_Table_Row < Zend_Db_Table_Row
- Enlight_Components_Db_Table_Rowset < Zend_Db_Table_Rowset
- Enlight_Components_Db_Table_Select < Zend_Db_Table_Select
Standardmäßig stellt das Interface eine Verbindung über den PDO/MySQL Adapter her. Falls PDO auf dem Server nicht zur Verfügung steht, wird auf eine native MySQL-Verbindung zurückgegriffen.
Interface
Jeder DB-Adapter muss Enlight_Components_Db_Table_Abstract erweitern und das Interface Enlight_Components_Db_Interface einbinden. Durch die Einbindung des Interfaces wird sichergestellt, das jeder Adapter eine Kompatibilitätsschicht zu adoDB enthält und vorhander Code somit problemlos funktioniert.
Integrierte Methoden:
<?php interface Enlight_Core_Components_Db_Interface { public function Insert_ID(); public function GetAll($sql, $vars=null); public function CacheGetAll($timeout, $sql, $vars=null); public function Execute($sql, $vars=null); public function CacheExecute($timeout, $sql, $vars=null); public function Affected_Rows(); public function GetRow($sql, $vars=null); public function GetOne($sql, $vars=null); public function GetAssoc($sql, $vars=null); public function GetCol($sql, $vars=null); public function quote($in); public function qstr($in); public function DoQuery($sql, $vars=null); } ?>
Beispiele
Beispiel für Initialisierung der Datenbank-Verbindung im Bootstrap:
protected function initDb() { require(Dashboard()->AppPath().'Config/Database.php'); $db = new Enlight_Components_Db(); $config = array("username"=>$DB_USER,"password"=>$DB_PASSWORD,"dbname"=>$DB_DATABASE,"host"=>$DB_HOST); $db = $db->factory("PDO_MYSQL",$config); }
Beispiel für die Verwendung der adoDB-Syntax:
$result = $db->getRow("SELECT 1 AS A"); print_r($result);
Beispiel für die Verwendung der Zend-Db-Syntax:
$result = $db->fetchRow("SELECT 1 AS A");
Beispiel für ein Datenbank-Model (Basis Zend_Db_Table)
<?php class Dashboard_Models_User extends Enlight_Components_Db_Table_Abstract { protected $_name = 's_core_auth'; protected $_primary = 'id'; } ?>
Beispiel für das Initialisieren eines Models:
$this->Model = new Dashboard_Models_User(Dashboard()->Db());
Beispiel für den Datenabruf aus einem Model:
Alle Benutzer:
$select = $this->Model->select()->from(array('u' => 's_core_auth'), array('text' => 'username','id','active','leaf'=>'(1)'))->order('text ASC'); return $this->Model->fetchAll($select)->toArray();
Ein Benutzer:
$result = $this->Model->find($r->uid); $user = $result->current()->toArray();
Beispiel für das Löschen von Datensätzen:
$where = $this->Model->getAdapter()->quoteInto('id = ?',$id); $this->Model->delete($where);
Beispiel für das Aktualisieren von Datensätzen:
$updateData = array("key"=>"value"); $this->Model->update($updateData,$this->Model->getAdapter()->quoteInto('id = ?',$id));
Formatierung Preisangaben
Basiert auf Zend_Currency
Beispiel:
{$sArticle.price|currency:use_shortname:left}
Syntax:
{VALUE|currency:FORMAT:POSITION}
Mögliche Einstellungen:
Format: no_sysmbol, use_sysmbol, use_shortname, usename
Position: left, right und standard
Formatierung Datumsangaben
Basiert auf Zend_Date
Beispiel:
{$sArticle.changetime|date:date_long} {$sArticle.changetime|date:time_short}
Ausgabe:
14. Juni 2010 11:20
Syntax:
{VALUE|date:FORMAT:TYPE}
Type kann "php" oder "iso" sein.
Weitere Formatierungsoptionen finden Sie hier:
http://framework.zend.com/manual/de/zend.date.constants.html
Session-Handling
Das Session-Handling in Shopware 3.5.0 baut auf Zend_Session auf (Vorher adoDB-Session-Handler). Weitere Informationen folgen...
Exception-Handling
...
Mail-Bibliothek
...
PDF-Erzeugung
...
Artikel-PDF erstellen
Artikel bewerten
Kommentare:
Artikel kommentieren
Weitere interessante Artikel:
Bestell-Nr.: SW1384
Lieferzeit ca. 5 Tage
Preise inkl. gesetzlicher
MwSt. zzgl. Versandkosten*
Preise inkl. gesetzlicher
MwSt. + Versandkosten*
Kategorien: