hi dompie,
hab das mal mit ModelAdmin probiert, allerdings tauchen unerwünschte Dinge und Fehler auf.
hier mal die Klassen um die es geht
class ProductDecorator extends DataObjectDecorator {
public function extraStatics(){
return array(
'db'=>array(
'Size'=>'Text'
),
'has_one'=>array(
'Programm'=>'Programm'
),
'has_many' => array(
'Bilder' => 'Bild'
),
'many_many'=>array(
'Farben'=>'Farbe'
)
);
}
Diese beiden sollen separat verwaltet werden...
class Farbe extends DataObject{
static $db=array(
'Bezeichnung'=>'Text'
);
static $has_one=array(
'Muster'=>'Bild'
);
static $belongs_many_many=array(
'Products'=>'Product'
);
static $singular_name="Farbe";
static $plural_name="Farben";
function getCMSFields_forPopup(){
$fields=new FieldSet(
new TextField('Bezeichnung','Bezeichnung'),
new ImageField('Muster','Muster')
);
return $fields;
}
}
Bei den Farben zeigt er mir, wenn ich eine aus der Liste auswähle, zwei Tabs, Hauptteil und Products. Products ist ein Liste der Produkte, die die Farbe beinhalten. Ganz nett, brauch an dieser Stelle aber eigentlich nicht, verwirrt nur den Kunden. Vorallem kann man da sogar CRUD machen. Wenn's nur eine Liste wäre ok.
Im Haupteil zeigt er mir Title als Feld an, und Muster als DropDown-Liste, die auch noch leer ist? Eigentlich sollte der Upload Dialog gezeigt werden...
class Programm extends DataObject{
static $db=array(
'Title'=>'Text',
'Art' => "Enum('NOS,Spezial,Monat')"
);
static $belongs_many_many=array(
'Products'=>'Product'
);
function getCMSFields_forPopup(){
$fields=new FieldSet(
new TextField('Title','Bezeichnung'),
new DropdownField('Art','Art',singleton('Programm')->dbObject('Art')->enumValues())
);
return $fields;
}
}
HIer bringt er nur die Liste. Beim Klick auf ein Programm kommt ein Fehler "There has been an error". Das könnte an fehlerhaftem Code liegen, allerdings funktioniert er, wenn ich zum Beispiel im Contentbereich einen DataObjectManager benutze um die Programme zu verwalten.