Silverstripe-Administrator: Dropdown-Liste "Hat eine" konvertiert nach dem Import in ein normales Eingabefeld

Ich habe einige Probleme mit dem Admin von Silverstripe. Ich habe ein Datenbankmodell definiert (siehe Klassendefinitionen unten) und nachdem ich ein dev / build erstellt habe, sieht alles wie erwartet aus. Wenn ich versuche, ein neues "Paket" hinzuzufügen, werden alle Felder mit einem Dropdown-Menü angezeigt (siehe Screenshot 1). Ich habe auch einen Importer gebaut, der diese Pakete importiert. Im laufenden Betrieb sieht alles gut aus, außer wenn Sie ein Paket öffnen. Dann ist 'Festival' richtig gekoppelt. Sie können den Namen sehen und die Dropdown-Liste auswählen. "Troupe" hingegen wurde auf mysteriöse Weise in ein Eingabefeld umgewandelt, in dem nur die ID des Datensatzes in der anderen Tabelle angezeigt wird (siehe Screenshot 2).

Weiß jemand, was hier passiert? Gibt es etwas, das dieses Verhalten auslöst, von dem ich nichts weiß? Ist etwas mit meinem Code nicht in Ordnung (ja, hängt aber mit diesem Problem zusammen? ;-))? Ich habe die Struktur der Tabellen überprüft und es gibt dort nichts Verdächtiges ...

Vor:

Nach:

Package.php

    class Package extends DataObject {
        public static $db = array(
            'Number'                    => 'Int',
            'Title'                     => 'Varchar(255)',
            'Description'               => 'HTMLText',
            'Credits'                   => 'HTMLText',
        );

        public static $has_many = array(
            'Events'    => 'Event',
        );

        public static $many_many = array(
           'Genres'            => 'Genre',
        );

        public static $has_one = array(
            'Festival'          => 'Festival',
            'Troupe'            => 'Troupe',
        );
    }

    class PackageAdmin extends ModelAdmin {
        public static $managed_models       = array('Package'); // Can manage multiple models
        static $url_segment                 = 'packages'; // Linked as /admin/packages/
        static $menu_title                  = 'Packages';
    }

Troupe.php

    class Troupe extends DataObject {
        public static $db = array(
            "Name"          => "Varchar(255)",
            "Description"   => "HTMLText",
            "Url"           => "Varchar(255)",
        );

        public static $has_many = array(
            'Packages'      => 'Package.Troupe',
        );
    }

    class TroupeAdmin extends ModelAdmin {
        public static $managed_models       = array('Troupe','Package'); // Can manage multiple models
        static $url_segment                 = 'troupes'; // Linked as /admin/troupes/
        static $menu_title                  = 'Troupes';
    }

Festival.php

class Festival extends DataObject {

    public static $db = array(
        'Name'          => 'Varchar(255)',
        'Description'   => 'HTMLText'
    );

    public static $has_many = array(
        'Packages' => 'Package.Festival'
    );
}

class FestivalAdmin extends ModelAdmin {
    public static $managed_models       = array('Festival','Package'); // Can manage multiple models
    static $url_segment                 = 'festivals'; // Linked as /admin/festivals/
    static $menu_title                  = 'Festivals';
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage