DC Memory: Unterschied zwischen den Versionen

Aus Contao Community Documentation

Zeile 10: Zeile 10:
 
Hier ein Beispiel:
 
Hier ein Beispiel:
  
[code=php]
+
[php]
 
'onload_callback'          => array
 
'onload_callback'          => array
 
(
 
(
Zeile 19: Zeile 19:
 
array('class', 'onsubmit_callback'),
 
array('class', 'onsubmit_callback'),
 
)
 
)
[/code]
+
[/php]
 +
[php]
 
public function onload_callback(DataContainer $dc)
 
public function onload_callback(DataContainer $dc)
 
{
 
{
 +
// Werte holen von der DB oder einem File oder was auch immer
 +
 +
// Setzen eines Wertes
 
$dc->setData('field', 'Wert');
 
$dc->setData('field', 'Wert');
  
Zeile 29: Zeile 33:
 
$arrData['field2'] = 'Wert 2';
 
$arrData['field2'] = 'Wert 2';
 
$dc->setDataArray($arrData);
 
$dc->setDataArray($arrData);
 +
}
 +
[/php]
 +
[/php]
 +
public function onsubmit_callback(DataContainer $dc)
 +
{
 +
// Holen eines Wertes
 +
$strField1 $dc->getData('field1');
 +
 +
// auch das Holen aller Werte auf einmal funktioniert:
 +
$arrData = $dc->getDataArray();
 +
 +
// und dann ab in die DB oder in ein File oder wohin auch immer
 +
}
 +
[/php]
 +
 +
== Versionierung ==
 +
Es wäre ja gelacht, wenn wir die Standard-Versionierung von Contao nehmen würden, denn die bietet für die meisten Entwickler zu wenig Flexibilität (was aber nicht heisst, man kann die Core-Versionierung nicht auch einbauen).
 +
 +
Folgende Konfiguration ist notwendig:
 +
[php]
 +
'enableVersioning' => true,
 +
'listversions_callback'    => array
 +
(
 +
array('class', 'listversions_callback'),
 +
),
 +
'dcMemory_onrestore_callback'    => array
 +
(
 +
array('class', 'dcMemory_onrestore_callback'),
 +
)
 +
[/php]
 +
[php]
 +
public function listversions_callback(DataContainer $dc, $arrVersions)
 +
{
 +
$arrVersions[] = array
 +
(
 +
'value' => 'version_1',
 +
'selected' => true, // Diese Version ist die jüngste
 +
'label' => 'Meine jüngste Version'
 +
);
 +
 +
return $arrVersions;
 +
}
 +
[/php]
 +
[php]
 +
public function dcMemory_onrestore_callback(DataContainer $dc, $strVersion)
 +
{
 +
// $strVersion enthält den value, also z.B. "version_1"
 +
}
 +
[/php]
 +
 +
== Mehrsprachigkeit ==
 +
 +
Ja, die DC_Memory unterstützt Mehrsprachigkeit. Da sie sich nicht darum kümmert, woher die Daten kommen und wohin sie gespeichert werden, bietet sie schlichtweg die Möglichkeit, Sprachen anzubieten und Methoden zur Abfrage, welche Sprache aktuell bearbeitet wird.
 +
Die Konfiguration erfolgt im onload_callback und könnte so aussehen:
 +
[php]
 +
public function onload_callback(DataContainer $dc)
 +
{
 +
// Sprachwechsel-Konfiguration
 +
$objLangConfig = new stdClass();
 +
 +
// Fallback zusätzlich zu den Sprachen anbieten
 +
$objLangConfig->enableFallback = true;
 +
 +
// Sprachen-Array
 +
$objLangConfig->arrLanguages = array
 +
(
 +
'de' => array
 +
(
 +
'label' => 'Deutsch',
 +
'selected' => ($dc->getLanguage() == 'de')
 +
),
 +
'fr' => array
 +
(
 +
'label' => 'Französisch',
 +
'selected' => ($dc->getLanguage() == 'fr')
 +
)
 +
);
 +
 +
// und jetzt das ganze noch aktivieren
 +
$dc->enableLanguageSwitch($objLangConfig);
 +
 +
// die getLanguage()-Methode bietet die Möglichkeit, die aktuell bearbeitete Sprache zu holen
 +
switch($dc->getLanguage())
 +
{
 +
case 'de':
 +
$dc->setData('name', 'Wir sprechen sowas von Deutsch!');
 +
break;
 +
case 'fr':
 +
$dc->setData('name', 'On parle le français aussi!');
 +
break;
 +
default:
 +
$dc->setData('name', 'What about a fallback?');
 +
}
 +
 +
// Sprachen können auch gelöscht werden.
 +
$strEditMode = $dc->getLanguageEditMode() // enthält entweder "edit" wenn man eine Sprache bearbeitet oder "delete" wenn die Sprache gelöscht werden soll
 
}
 
}
 
[/php]
 
[/php]

Version vom 29. August 2011, 16:11 Uhr

Danke für's Formatieren :D

DC_Memory

Allgemeines

Die DC_Memory ist ein eigener DCA-Driver wie die DC_Table oder andere. Allerdings bietet diese für den Entwickler extrem viel mehr Flexibilität, also die DC_Table, weil die DC_Memory das Laden und Speichern der Daten vollständig dem Entwickler überlässt.

Daten laden und speichern

Zum Speichern und Laden der Daten werden die bekannten onload_callbacks und onsubmit_callbacks genutzt. Hier ein Beispiel:

[php] 'onload_callback' => array ( array('class', 'onload_callback'), ), 'onsubmit_callback' => array ( array('class', 'onsubmit_callback'), ) [/php] [php] public function onload_callback(DataContainer $dc) { // Werte holen von der DB oder einem File oder was auch immer

// Setzen eines Wertes $dc->setData('field', 'Wert');

// auch das Setzen aller Werte auf einmal funktioniert: $arrData = array(); $arrData['field1'] = 'Wert 1'; $arrData['field2'] = 'Wert 2'; $dc->setDataArray($arrData); } [/php] [/php] public function onsubmit_callback(DataContainer $dc) { // Holen eines Wertes $strField1 $dc->getData('field1');

// auch das Holen aller Werte auf einmal funktioniert: $arrData = $dc->getDataArray();

// und dann ab in die DB oder in ein File oder wohin auch immer } [/php]

Versionierung

Es wäre ja gelacht, wenn wir die Standard-Versionierung von Contao nehmen würden, denn die bietet für die meisten Entwickler zu wenig Flexibilität (was aber nicht heisst, man kann die Core-Versionierung nicht auch einbauen).

Folgende Konfiguration ist notwendig: [php] 'enableVersioning' => true, 'listversions_callback' => array ( array('class', 'listversions_callback'), ), 'dcMemory_onrestore_callback' => array ( array('class', 'dcMemory_onrestore_callback'), ) [/php] [php] public function listversions_callback(DataContainer $dc, $arrVersions) { $arrVersions[] = array ( 'value' => 'version_1', 'selected' => true, // Diese Version ist die jüngste 'label' => 'Meine jüngste Version' );

return $arrVersions; } [/php] [php] public function dcMemory_onrestore_callback(DataContainer $dc, $strVersion) { // $strVersion enthält den value, also z.B. "version_1" } [/php]

Mehrsprachigkeit

Ja, die DC_Memory unterstützt Mehrsprachigkeit. Da sie sich nicht darum kümmert, woher die Daten kommen und wohin sie gespeichert werden, bietet sie schlichtweg die Möglichkeit, Sprachen anzubieten und Methoden zur Abfrage, welche Sprache aktuell bearbeitet wird. Die Konfiguration erfolgt im onload_callback und könnte so aussehen: [php] public function onload_callback(DataContainer $dc) { // Sprachwechsel-Konfiguration $objLangConfig = new stdClass();

// Fallback zusätzlich zu den Sprachen anbieten $objLangConfig->enableFallback = true;

// Sprachen-Array $objLangConfig->arrLanguages = array ( 'de' => array ( 'label' => 'Deutsch', 'selected' => ($dc->getLanguage() == 'de') ), 'fr' => array ( 'label' => 'Französisch', 'selected' => ($dc->getLanguage() == 'fr') ) );

// und jetzt das ganze noch aktivieren $dc->enableLanguageSwitch($objLangConfig);

// die getLanguage()-Methode bietet die Möglichkeit, die aktuell bearbeitete Sprache zu holen switch($dc->getLanguage()) { case 'de': $dc->setData('name', 'Wir sprechen sowas von Deutsch!'); break; case 'fr': $dc->setData('name', 'On parle le français aussi!'); break; default: $dc->setData('name', 'What about a fallback?'); }

// Sprachen können auch gelöscht werden. $strEditMode = $dc->getLanguageEditMode() // enthält entweder "edit" wenn man eine Sprache bearbeitet oder "delete" wenn die Sprache gelöscht werden soll } [/php]

Ansichten
Meine Werkzeuge

Contao Community Documentation

omg, ich brauche wirklich ne Freundin... ich lese nachts um 2 den Wiki Beitrag über Comic Sans MS

Leo Unglaub
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge