MultiSelectWizard: Unterschied zwischen den Versionen
Aus Contao Community Documentation
Toflar (Diskussion | Beiträge) (→MultiSelectWizard::getArrayByKeyMatchinAnotherKeyFromSerializedData($strSerialized, $strKey, $arrAnotherKey)) |
K (→Helper Methoden: Aufbereitung) |
||
Zeile 72: | Zeile 72: | ||
==Helper Methoden== | ==Helper Methoden== | ||
− | + | In der Erweiterung wurden auch Helper-Methoden eingebaut, die man verwenden kann. | |
− | + | ||
− | ===MultiSelectWizard::getByKey($strSerialized, $strKey) | + | ===getByKey=== |
− | + | Die einfachere Methode ist mittels '''<code>MultiSelectWizard::getByKey($strSerialized, $strKey)</code>'''. Einfach den serialisierten Wert aus der Datenbank plus den gewünschten Key mitgeben (im obigen Beispiel z.B. "language") und man bekommt ein aggregiertes Array mit allen Werten von dieser Spalte. | |
<source lang="php"> | <source lang="php"> | ||
$arrLanguages = MultiSelectWizard::getByKey($obj->myField, 'language'); | $arrLanguages = MultiSelectWizard::getByKey($obj->myField, 'language'); | ||
</source> | </source> | ||
− | ===MultiSelectWizard::getFilteredByKey($strSerialized, $strKey, $arrAnotherKey) | + | ===getFilteredByKey=== |
− | + | Die etwas kompliziertere Methode ist mit '''<code>MultiSelectWizard::getFilteredByKey($strSerialized, $strKey, $arrAnotherKey)</code>'''. Der Anfang ist genau gleich: Man übergibt einen serialisierter Wert und Key. Dann kommt ein Array, mit dessen Hilfe man Return-Werte filtern kann. | |
− | Wenn | + | Wenn man also alle Sprachen möchte, die in der "secondcolumn" den Wert "option2" haben, nutzt man die Methode wie folgt: |
<source lang="php"> | <source lang="php"> | ||
$arrLanguagesOption2 = MultiSelectWizard::getFilteredByKey($obj->myField, 'language', array('secondcolumn'=>'option2')); | $arrLanguagesOption2 = MultiSelectWizard::getFilteredByKey($obj->myField, 'language', array('secondcolumn'=>'option2')); | ||
</source> | </source> | ||
− | Selbstverständlich | + | Selbstverständlich kann man auch mehrere Filterangaben mitgeben. Einfach immer im Stil von "column_key" => "source_value". |
Version vom 23. Februar 2011, 21:23 Uhr
Erweiterungs-Übersicht | |
---|---|
Name des Entwicklers | Yanick Witschi |
Entwickler Webseite | http://www.certo-net.ch |
Version der Erweiterung | 1.0.0 |
Kompatibilität mit Contao Version | 2.9.0 - 2.9.3 |
Kompatibilität mit TYPOlight Version | 2.7.0 - 2.8.4 |
Link zum Extension Repository | http://www.contao.org/erweiterungsliste/view/MultiSelectWizard.html |
Link zum Tracker | http://contao-forge.org/projects/multiselectwizard |
Dieses Widget ist dafür gedacht, mehrere Select-Inputs nebeneinander zu definieren.
Das Widget ist eigentlich das gleiche wie der MultiTextWizard, jedoch mit Dropdown-Feldern.
Inhaltsverzeichnis
Aussehen
Das Modul sieht haargenau gleich aus wie der ModuleWizard vom Contao-Core. Das Problem bei diesem Wizard ist nur, dass die Quellen alle hardgecodet sind und es deshalb für Drittentwickler unbrauchbar ist.
Verwendung
Es gibt zwei Verwendungsmöglichkeiten. Entweder direkt mit der Angabe von "columnsData" im "eval"-Array oder mit einem Callback.
Angabe mit columnsData
$GLOBALS['TL_DCA']['tl_table']['fields']['anything'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_table']['anything'], 'exclude' => true, 'inputType' => 'multiSelectWizard', 'eval' => array ( 'mandatory'=>true, 'columnsData'=> array ( 'columns' => array ( 'key' => 'language', 'label' => $GLOBALS['TL_LANG']['MSC']['mylanguagelabel'], 'source' => $this->getLanguages(), 'style' => 'width:200px' ), array ( 'key' => 'secondcolumn', 'label' => $GLOBALS['TL_LANG']['MSC']['secondcolumn'], 'source' => array ( 'option1' => $GLOBALS['TL_LANG']['MSC']['option1'], 'option2' => $GLOBALS['TL_LANG']['MSC']['option2'], 'option3' => $GLOBALS['TL_LANG']['MSC']['option3'] ), 'style' => 'width:100px' ) ) ) );
Angabe mit Callback
$GLOBALS['TL_DCA']['tl_table']['fields']['anything'] = array ( 'label' => &$GLOBALS['TL_LANG']['tl_table']['anything'], 'exclude' => true, 'inputType' => 'multiSelectWizard', 'eval' => array('mandatory'=>true,'columnsCallback'=>array('Class', 'Method')) );
Wobei natürlich der Return-Wert genau das selbe Array sein muss, wie bei der "columnsData"-Variante.
Helper Methoden
In der Erweiterung wurden auch Helper-Methoden eingebaut, die man verwenden kann.
getByKey
Die einfachere Methode ist mittels MultiSelectWizard::getByKey($strSerialized, $strKey)
. Einfach den serialisierten Wert aus der Datenbank plus den gewünschten Key mitgeben (im obigen Beispiel z.B. "language") und man bekommt ein aggregiertes Array mit allen Werten von dieser Spalte.
$arrLanguages = MultiSelectWizard::getByKey($obj->myField, 'language');
getFilteredByKey
Die etwas kompliziertere Methode ist mit MultiSelectWizard::getFilteredByKey($strSerialized, $strKey, $arrAnotherKey)
. Der Anfang ist genau gleich: Man übergibt einen serialisierter Wert und Key. Dann kommt ein Array, mit dessen Hilfe man Return-Werte filtern kann.
Wenn man also alle Sprachen möchte, die in der "secondcolumn" den Wert "option2" haben, nutzt man die Methode wie folgt:
$arrLanguagesOption2 = MultiSelectWizard::getFilteredByKey($obj->myField, 'language', array('secondcolumn'=>'option2'));
Selbstverständlich kann man auch mehrere Filterangaben mitgeben. Einfach immer im Stil von "column_key" => "source_value".