Hallo allerseits,
versuche gerade den Catalog um einen zusätzlichen Feld-Typ zu erweitern, welcher ein spezielles Select zur Auswahl eines Mitglieds einer bestimmten Gruppe bereitstellt:
config.php
PHP-Code:
$GLOBALS['BE_MOD']['content']['catalog']['fieldTypes']['select_member'] = array
(
'typeimage' => 'system/modules/catalog_select_member/html/icon.png',
'fieldDef' => array
(
'inputType' => 'select',
'options_callback' => array('CatalogSelectMember', 'generateOptions'),
'eval' => array('chosen'=>true, 'doNotCopy'=>true, 'alwaysSave'=>true, 'includeBlankOption'=> true)
),
'sqlDefColumn' => "int(10) NOT NULL default 0",
'parseValue' => array(array('CatalogSelectMember', 'parseValue'))
);
$GLOBALS['BE_MOD']['content']['catalog']['typesCatalogFields'][] = 'select_member';
tl_catalog_fields.php
PHP-Code:
$GLOBALS['TL_DCA']['tl_catalog_fields']['fields']['memberGroup'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_catalog_fields']['memberGroup'],
'inputType' => 'select',
'foreignKey' => "tl_member_group.name",
'eval' => array
(
'submitOnChange' => false,
'includeBlankOption' => true,
'chosen' => true,
'tl_class' => 'w50'
)
);
CatalogSelectMember.php
PHP-Code:
class CatalogSelectMember extends Backend
{
public function __construct()
{
parent::__construct();
}
public function generateOptions()
{
$arrOptions = array();
$objOptions = $this->Database->execute("SELECT id, firstname, lastname, email, groups FROM tl_member ORDER BY lastname, firstname, email");
while ($objOptions->next())
{
$groups = unserialize($objOptions->groups);
if (in_array({{memberGroup}}, $groups))
{
$arrOptions[$objOptions->id] = $objOptions->lastname .', '. $objOptions->firstname .', '. $objOptions->email;
}
}
return $arrOptions;
}
}
Dabei frage ich mich jetzt gerade, wie ich in meiner options_callback-Funktion generateOptions() nun den memberGroup-Wert (oben in geschweiften Klammern) reinbekomme, so dass die Auswahl-Optionen nach der festgelegten Gruppe gefiltert werden?