Difference between revisions of "MultiSelectWizard"
From Contao Community Documentation
(→Look) |
|||
Line 73: | Line 73: | ||
==Helper methods== | ==Helper methods== | ||
− | + | The extension also provides helper methods every developer can make use of. | |
===getByKey=== | ===getByKey=== | ||
− | + | The easier method is using '''<code>MultiSelectWizard::getByKey($strSerialized, $strKey)</code>'''. Just provide the serialized value from the database and the desired key of the column (in the example above e.g. "language") and you get an array of all values of this column. | |
<source lang="php"> | <source lang="php"> | ||
$arrLanguages = MultiSelectWizard::getByKey($obj->myField, 'language'); | $arrLanguages = MultiSelectWizard::getByKey($obj->myField, 'language'); | ||
Line 82: | Line 82: | ||
===getFilteredByKey=== | ===getFilteredByKey=== | ||
− | + | The rather more sophisticated method is '''<code>MultiSelectWizard::getFilteredByKey($strSerialized, $strKey, $arrAnotherKey)</code>'''. The two first parameters are the same. You provide the serialized value and the key of the column you want the values of. Then there's a third parameter where you can filter your return values. | |
− | + | Assuming you want to have all languages that use have the value "option2" in the column "secondcolumn" you can use this method as follows: | |
<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> | ||
− | + | You can use multiple filter conditions. Just extend the $arrAnotherkey accordingly. |
Revision as of 08:57, 25 February 2011
Extension-Overview | |
---|---|
Name of the developer | Yanick Witschi |
Developer Website | http://www.certo-net.ch |
Version of the extension | 1.0.0 |
Compatibility with Contao Version | 2.9.0 - 2.9.3 |
Compatibility with TYPOlight Version | 2.7.0 - 2.8.4 |
Link to Extension Repository | http://www.contao.org/extension-list/view/MultiSelectWizard.html |
Link to Tracker | http://contao-forge.org/projects/multiselectwizard |
This widget is meant to define one or more select input fields side by side and as many rows as you want.
Contents
Look
The widget looks exactly the same like the ModuleWizard of the Contao core. The problem with this wizard is that the sources (SELECT * FROM tl_module etc.) are all hardcoded and it's therefore useless for third party developers.
Usage
There are two different ways of using the widget. Either by providing the data directly using "columnsData" in the "eval" array or with a callback.
Providing 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' ) ) ) );
Providing data using the 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')) );
Where obviously the return value of your method should be the same array as with the "columnsData" variant.
Helper methods
The extension also provides helper methods every developer can make use of.
getByKey
The easier method is using MultiSelectWizard::getByKey($strSerialized, $strKey)
. Just provide the serialized value from the database and the desired key of the column (in the example above e.g. "language") and you get an array of all values of this column.
$arrLanguages = MultiSelectWizard::getByKey($obj->myField, 'language');
getFilteredByKey
The rather more sophisticated method is MultiSelectWizard::getFilteredByKey($strSerialized, $strKey, $arrAnotherKey)
. The two first parameters are the same. You provide the serialized value and the key of the column you want the values of. Then there's a third parameter where you can filter your return values.
Assuming you want to have all languages that use have the value "option2" in the column "secondcolumn" you can use this method as follows:
$arrLanguagesOption2 = MultiSelectWizard::getFilteredByKey($obj->myField, 'language', array('secondcolumn'=>'option2'));
You can use multiple filter conditions. Just extend the $arrAnotherkey accordingly.