MultiSelectWizard: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(MultiSelectWizard::getArrayByKeyFromSerializedData($strSerialized, $strKey))
(MultiSelectWizard::getArrayByKeyMatchinAnotherKeyFromSerializedData($strSerialized, $strKey, $arrAnotherKey))
Zeile 81: Zeile 81:
 
</source>
 
</source>
  
===MultiSelectWizard::getArrayByKeyMatchinAnotherKeyFromSerializedData($strSerialized, $strKey, $arrAnotherKey)===
+
===MultiSelectWizard::getFilteredByKey($strSerialized, $strKey, $arrAnotherKey)===
 
Dies ist die etwas kompliziertere Methode. Der Anfang ist genau gleich: Serialisierter Wert und Key übergeben. Dann kommt ein Array mit dessen Hilfe man Return-Werte filtern kann.
 
Dies ist die etwas kompliziertere Methode. Der Anfang ist genau gleich: Serialisierter Wert und Key übergeben. Dann kommt ein Array mit dessen Hilfe man Return-Werte filtern kann.
 
Wenn ich also alle Sprachen möchte, die in der "secondcolumn" den Wert "option2" haben, nutze ich die Methode wie folgt:
 
Wenn ich also alle Sprachen möchte, die in der "secondcolumn" den Wert "option2" haben, nutze ich die Methode wie folgt:
 
<source lang="php">
 
<source lang="php">
$arrLanguagesOption2 = MultiSelectWizard::getArrayByKeyMatchinAnotherKeyFromSerializedData($obj->myField, 'language', array('secondcolumn'=>'option2'));
+
$arrLanguagesOption2 = MultiSelectWizard::getFilteredByKey($obj->myField, 'language', array('secondcolumn'=>'option2'));
 
</source>
 
</source>
  
 
Selbstverständlich könnt ihr auch mehrere Filterangaben mitgeben. Einfach immer im Stil von "column_key" => "source_value".
 
Selbstverständlich könnt ihr auch mehrere Filterangaben mitgeben. Einfach immer im Stil von "column_key" => "source_value".

Version vom 23. Februar 2011, 19:51 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.

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.

MultiSelectWizard

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

Da ich Fan von wiederverwendbarem Code und somit von der faulen Garde bin, hab ich selbstverständlich auch Helper-Methoden eingebaut, die ihr verwenden könnt. Sorry, ich konnte die Methoden irgendwie nicht kürzer benennen :D

MultiSelectWizard::getByKey($strSerialized, $strKey)

Die einfachere Methode. Einfach den serialisierten Wert aus der Datenbank plus den gewünschten Key mitgeben (im obigen Beispiel z.B. "language") und ihr kriegt ein aggregiertes Array mit allen Werten von dieser Spalte.

$arrLanguages = MultiSelectWizard::getByKey($obj->myField, 'language');

MultiSelectWizard::getFilteredByKey($strSerialized, $strKey, $arrAnotherKey)

Dies ist die etwas kompliziertere Methode. Der Anfang ist genau gleich: Serialisierter Wert und Key übergeben. Dann kommt ein Array mit dessen Hilfe man Return-Werte filtern kann. Wenn ich also alle Sprachen möchte, die in der "secondcolumn" den Wert "option2" haben, nutze ich die Methode wie folgt:

$arrLanguagesOption2 = MultiSelectWizard::getFilteredByKey($obj->myField, 'language', array('secondcolumn'=>'option2'));

Selbstverständlich könnt ihr auch mehrere Filterangaben mitgeben. Einfach immer im Stil von "column_key" => "source_value".

Ansichten
Meine Werkzeuge

Contao Community Documentation

Pelle: gibt's ein besseres Wort für "beschränkt"?
Thomas: "Kunde"

Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge