ich erweiter gerade Member um eine Favorites-Funktion, bei der verschiedene Nutzergruppen die Möglichkeit bekommen sollen, Seiten als Favorit zu speichern.
Da ich dies später auf mehrere Nutzerklassen ausdehnen möchte habe ich es als Decorator angelegt.
Der Decorator:
class MemberFavorites extends DataObjectDecorator
{
function updateCMSFields(FieldSet &$fields)
{
$source = DataObject::get('Record');
$favorites = new MultiSelectField(
"Favorites", // Relationship
"Favorites", // Field name
$source->toDropdownMap('ID','Title') // Source records (array)
);
$fields->addFieldsToTab('Root.Favorites', $favorites);
return $fields;
}
function extraStatics()
{
return array(
'many_many' => array(
'Favorites' => 'Favorite'
)
);
}
}
DataObject::add_extension('RegistredUser', 'MemberFavorites');
Class Favorites:
class Favorite extends DataObject
{
static $has_one = array(
'Record' => 'Record'
);
static $belongs_many_many = array(
'Member' => 'Member'
);
}
Class Record:
class Record … {
…
$has_one = array(
…
'Favorite' = 'Favorite'
)
…
}
Auch wenn ich die Records im MultiSelectField sehe und auswählen kann, werden sie nicht gespeichert. Kann es an der ungenauen belongs_many_many-Class im Favorite-Object liegen? Ich habe dort "nur" die Basisklasse von den Usern…
Ich hoffe ihr wisst was ich meine.
Danke
Jörn

