Silverstripe admin: „Posiada jedno” menu rozwijane po zaimportowaniu do zwykłego pola wejściowego
Mam problemy z administratorem Silverstripe. Zdefiniowałem model bazy danych (zobacz definicje klas poniżej), a po zrobieniu dev / build wszystko wygląda zgodnie z oczekiwaniami. Kiedy próbuję dodać nowy „pakiet”, wszystkie pola „ma jeden” są tam z rozwijanym menu (patrz zrzut ekranu 1). Zbudowałem również importera, który importuje te pakiety. Po uruchomieniu wszystko wygląda dobrze, chyba że otworzysz pakiet. Następnie „Festiwal” jest prawidłowo połączony. Możesz zobaczyć nazwę i możesz wybrać rozwijaną listę. Natomiast „Troupe” w tajemniczy sposób przekształciło się w pole wejściowe, które pokazuje tylko identyfikator rekordu w innej tabeli (patrz zrzut ekranu 2).
Czy ktoś wie, co się tutaj dzieje? Czy jest coś, co wyzwala to zachowanie, którego nie znam? Czy coś jest nie tak z moim kodem (tak, ale związane z tym problemem? ;-))? Sprawdziłem strukturę tabel i nie ma tam niczego podejrzanego ...
Przed:
Po:
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';
}