Shopware Knowledgebase

Shopware Labs

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 Kommentare

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

Waren diese Informationen hilfreich? Ja Nein


Kommentare:

Artikel kommentieren


Die mit einem * markierten Felder sind Pflichtfelder.

Weitere interessante Artikel:

Bezeichnung:
Rating:
Klicks:
Datum:
7 Punkte
5220
07.03.2011
7 Punkte
5453
27.04.2011
7 Punkte
4909
28.02.2011

Bestell-Nr.: SW1384

Lieferzeit ca. 5 Tage

€ 1,00

Preise inkl. gesetzlicher
MwSt. zzgl. Versandkosten*

€ 1,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*

Kategorien: