135 Nachrichten unter 47 Themen von 48 Mitgliedern
[SilverStripe Roadmap][Changelog]

CMS erweitern,.. keine ModelAdmin,..brauch einfach zwei Tabs dieDOM abbilden

Seite: 1 663 mal gelesen
  • Lukin
    Lukin Community Member
    60 Beiträge

    CMS erweitern,.. keine ModelAdmin,..brauch einfach zwei Tabs dieDOM abbilden

    HI,

    ich habe verschiede Daten, die ich gern in einem separaten CMS-Menü bearbeiten CRUD möchte.
    Hierzu würde ich gerne einen Bereich anlegen, der keinen Left-Bereich hat, sondern einfach pro
    DataObject einen Tab anbietet, in dem eine DOM-Komponente die benötigte Funkionalität bietet.

    Wie muss ich da vorgehen?

    schonmal danke und gruß
  • dompie
    dompie Community Member
    7 Beiträge

    Re: CMS erweitern,.. keine ModelAdmin,..brauch einfach zwei Tabs dieDOM abbilden

    Hmm, schönes Problem. Habe ich noch nicht gehabt. Im ersten Anlauf würde ich aber trotzdem über den ModelAdmin gehen und Ihm die vier Klassen als managed_models angeben.
  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: CMS erweitern,.. keine ModelAdmin,..brauch einfach zwei Tabs dieDOM abbilden

    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.
  • Izeroy
    Community Member
    211 Beiträge

    Re: CMS erweitern,.. keine ModelAdmin,..brauch einfach zwei Tabs dieDOM abbilden

    Hallo Lukin,
    über die Funktion

    function scaffoldFormFields() {
             
          }


    Kannst du die Felder im ModelAdmin Interface generieren.

    Sollte bei dir also theoretisch so funktionieren:


    function scaffoldFormFields() {
    $tab = new FieldSet(new TabSet('Main',new Tab('Hauptteil', new TextField('Bezeichnung','Bezeichnung'),
    new ImageField('Muster','Muster')
                   )));
             return $tab;
    }


    Dies nur als Beispiel für das Farben DataObject. Mit den Infos solltest du den Rest alleine hinkriegen.


    Greetz
    Ben

    Weitere Fragen?! Meld dich einfach! MSN: benjamin.buessenschuett@hotmail.de ICQ: 354 848 193 Webseite: www.silverstripe-hilfe.de

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: saerdna