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

CheckBoxSetField speichert many_many nicht

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

    CheckBoxSetField speichert many_many nicht

    Hi,

    ich würde gern mit einem CheckBoxSetField meine Daten aus einer many_many Relation abbilden und auch speichern.
    Das speichern funktionert allerdings nicht. Muss man da ne eigen Funktion schreiben oder geht das normalerweise schon?

    Gruß
  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: CheckBoxSetField speichert many_many nicht

    Der Name der Sets muss der Name der Relations sein. Dann geht's.

    Allerdings gibt's dann nen fetten Bug meiner Ansicht nach.

    Ich habe nun diese CheckBoxSet mit dem Namen Farben (Product n:m Farbe) in Root.Content.Main
    In einem anderen Reiter/Tab soll man , falls ein Farbe fehl, weitere hinzufügen können.
    Dies geschieht über den ManyManyDataObjectManager. Nun greifen zwei Komponenten auf die Relation zu
    und die als erstes hinzugefügte fliegt raus grad wieder raus. Sprich entweder habe ich das CheckboxSet oder den DataObjectManager.

    Was nu?

    Hier mal der Code


    $farbenTable=new ManyManyDataObjectManager(
    $this->owner,
       'Farben',
       'Farbe',
       array(
          'Bezeichnung' => 'Bezeichnung'
       ),
       'getCMSFields_forPopup',
       null
    );
    $fields->addFieldToTab('Root.Farben/Waschungen',$farbenTable);


    $dataFarben = DataObject::get('Farbe');
    if ($dataFarben) {
       $dataFarben = $dataFarben->toDropdownMap('ID', 'Bezeichnung', 'Ein Programm auswählen...', true);
    }
    $fields->addFieldToTab('Root.Content.Main', new CheckboxSetField($name = "Farben", $title = "I am interested in the following topics",$source = $dataFarben), 'Content');
  • Izeroy
    Community Member
    211 Beiträge

    Re: CheckBoxSetField speichert many_many nicht

    Hallo Lukin,
    schon versucht den ManyManyDataObjectManager durch den "DataObjectManager" zu ersetzen? Damit könnte es funktionieren.

    Greetz
    Ben

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

  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: CheckBoxSetField speichert many_many nicht

    HI Ben,

    ne bringt nichts. Soblad zwei Komponenten auf die Relation zugreifen ist die zuerst hinzugefügte Komponente wech.
    Das ist dünn...

  • Izeroy
    Community Member
    211 Beiträge

    Re: CheckBoxSetField speichert many_many nicht

    Das ist ja auch soweit logisch.

    Du hast 2 Felder, die das gleiche machen, und wenn nicht beide gleich eingestellt sind, kommt es zu Konflikten.

    Prinzipiell müsste es gehen, wenn du in dem Farben Tab keine Relationen bearbeitest sondern nur die Farben hinzufügst.
    Wenn du also theoretisch eine 2. Relation einfügst, Farben2 diese auf den DataObjectManager legst, damit es beim Aufruf keine Fehlermeldung gibt, somit können dort neue Farben hinzugefügt werden, aber keine Zuordnungen gestaltet werden.

    In deinem CheckBoxSetField würden damit, die Relationen bearbeitet werden.

    Andere Möglichkeit, wäre über JavaScript beim Auswählen im CheckBoxSetField, den Gegenpart im DataObjectManager auszuwählen, und andersrum. Ich kann jetzt nicht genau sagen, ob es weitere Möglichkeiten gibt, da ich dieses Problem noch nicht hatte.

    Ich würde es aber wahrscheinlich versuchen, über die 2. Relation zu lösen.

    Beispiel:


    static $has_many = array(
    'Farben1' => 'Farbe',
    'Farben2' => 'Farbe');


    Farben1 wird für das CheckBoxSetField verwendet.
    Farben2 wird für den DataObjectManager verwendet.

    Dadurch ist das zuordnen nur noch über das CheckBoxSetField möglich und das hinzufügen wäre über den DataObjectManager möglich.

    Ist zwar keine schöne Lösung, aber sollte funktionieren. Werde später wenn ich Zeit habe, mal schauen ob ich eine elegantere Lösung finde.

    Greetz
    Ben

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

  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: CheckBoxSetField speichert many_many nicht

    hi nochmal,..

    hab das grad mal ausprobiert. KLappt aber nicht ganz.

    das CheckBoxSetField braucht scheinbar die many_many-Relation,
    wenn ich has_one mache, gibt es einen fehler.
    also hab ich die relation des DOM auf has_many geändert. Dann wird alles angezeigt,
    allerdings bekomme ich beim speichern einer neuen Farbe einen error. Abgespeichert hat er sie dann
    zwar schon, aber ich kann kein Bild anhängen. Wenn ich eine Farbe bearbeiten will bringt er auch einen Fehler...

  • Lukin
    Lukin Community Member
    60 Beiträge

    Re: CheckBoxSetField speichert many_many nicht

    beide many_many tut's natürlich *g

    gibt 's ne Möglichkeit, dass CheckBoxSet zu aktualisieren out of the box quasi ;)
    oder nach dem Speichern einer Farbe das ganze Dokument zu speichern?

    ohman ich frag ja Krater in die Matrix

    echt Danke nochmal
  • Izeroy
    Community Member
    211 Beiträge

    Re: CheckBoxSetField speichert many_many nicht

    Puhhh... jetzt muss ich passen.

    Da hab ich selber noch keine Möglichkeit gefunden. Irgendwie bestimmt machbar. Eventuell über die onAfterWrite Funktion. Dort würde zumindest mein 1. Ansatz liegen. Aber eine fertige Lösung kann ich dir leider dafür nicht anbieten.

    Greetz
    Izzo

    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