26 Nachrichten unter 10 Themen von 14 Mitgliedern
[SilverStripe Roadmap][Changelog]

ModelAdmin erweitern many any Beziehung

Seite: 1 3584 mal gelesen
  • spankmaster79
    spankmaster79 Community Member
    22 Beiträge

    ModelAdmin erweitern many any Beziehung

    Hi,

    ich habe ModelAdmin erweitert um einen eigenen Bereich im Backend zu administrieren. Dort sind zum testen zwei Dataobjects administriert.

    Nun will ich aber, weil ich es für einen anderen Fall brauche, das Product und Category eine many many Beziehung haben. In Product ist Category als $belongs_many_many eingetragen und in Category Procuct als $many_many. Soweit sogut.

    Nun kann ich Produkte anlegen und denen beliebig viele Kategorien zuweisen und umgekehrt Kategorien mehrere Produkte. Jedoch muss ich die Produkte oder Kategorien immer neu anlegen. Ich würde aber gerne bei der Zuweisung zu den Kategorien die Auswahl von Produkten sehen, und umgekehrt genause.....

    Wie realisiert man sowas?

    Greetz
    Spanky

  • keys71
    Community Member
    19 Beiträge

    Re: ModelAdmin erweitern many any Beziehung

    Hi,

    wenn Deine Relationen passen musst Du durch noch an den Formtypen etwas "schrauben", also die von scaffolding benutzten Felder überschreiben. SS verwendet das ComplexTableField, besser ist aber das ManyManyComplextableField

    ich gehe von FOlgendem aus:
    Product
    many_many = array('Categories' => 'Category')


    class Product extends DataObject
    ...
    static $many_many = array('Categories' => 'Category');

    function getCMSFields() {
    $f = parent::getCMSFields(); // Felder holen
    $manager = new ManyManyComplexTableField(
    $this,
    'Categories',
    'Category',
    array('Title'=>'Title') // hier der Name der Kategorie, bzw. das Feld aus dem Categoy-Model
    );
    $f->replaceField('Categories', $manager);
    return $f;
    }







    und Category
    belongs_many_many = array('Products' => 'Product');


    class Category extends DataObject
    ...
    static $belongs_many_many = array('Products' => 'Product');

    function getCMSFields() {
    $f = parent::getCMSFields(); // Felder holen
    $products = DataObject::get('Product');
    $products = ( $products ->exists() ? $products ->toDropdownMap() : null );

    $f->replaceField('Products', new CheckboxsetField('Products', 'Products', $products));
    return $f;
    }




    Ungetestet - müsste aber passen.

    Gruß,
    Robert


  • spankmaster79
    spankmaster79 Community Member
    22 Beiträge

    Re: ModelAdmin erweitern many any Beziehung

    Vielen Dank,

    das hat geholfen. Nun bekomme ich eine Auflistung.

    Gruß

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: Jerryvaf