【发布时间】:2014-02-09 17:00:44
【问题描述】:
我在 Silverstripe 的管理员方面遇到了一些问题。我定义了一个数据库模型(参见下面的类定义),在我进行开发/构建之后,一切都按预期进行。当我尝试添加一个新的“包”时,所有“有一个”字段都带有一个下拉菜单(参见屏幕截图 1)。我还构建了一个导入器来导入这些包。运行时,一切看起来都很好,除非你打开一个包。然后“节日”正确耦合。您可以看到名称,并且可以选择下拉菜单。另一方面,“Troupe”已神秘地转换为一个输入字段,该字段仅显示另一个表中记录的 id(参见屏幕截图 2)。
有人知道这里发生了什么吗?有什么东西会触发我不知道的这种行为吗?我的代码有问题吗(是的,但与这个问题有关?;-))?我检查了表的结构,没有任何可疑之处......
之前:
之后:
包.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';
}
剧团.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';
}
【问题讨论】:
标签: php silverstripe