DataObject仅具有许多关系时的空白屏幕

时间:2016-09-17 11:36:39

标签: php orm silverstripe modeladmin

以下代码为ModelAdmin生成MyDataObject。添加MyDataObject时,编辑表单为空,因为只有在保存后才能看到many_many关系。

class TestAdmin extends ModelAdmin {
    static $managed_models = array('MyDataObject');
    static $url_segment = 'testadmin';
    static $menu_title = 'TestAdmin';
}

class MyDataObject extends DataObject {
    private static $many_many= array('MyOtherDataObjects' => 'MyOtherDataObject');
}

class MyOtherDataObject extends DataObject {
    private static $db = array('Name' => 'Varchar(255)');
    private static $belongs_many_many = array('MyDataObjects' => 'MyDataObject');
}

是否有任何方法可以立即建立many_many关系?

如果没有办法创建对象,然后在没有保存关系的情况下将其删除?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您的包可以有许多过滤器,并且不同的包可以使用一个过滤器。然后,Package和Filter之间有很多关系。产品列表是动态的,您可以每次计算。

您的用户应该以某种方式引用包,因此它应该具有属性名称,并且您至少有一个输入框来添加新包(而不是现在的空白屏幕)。

更新

您描述的行为是正确的和预期的。Add New状态与数据库同步,因此在您决定将列表存储在开箱即用的DB中之前,您不能将项目存储在内存中。 / p>

您可以将NSFetchRequest按钮替换为您自己的实现,以自动创建新对象,将其保存在数据库中并重定向到编辑屏幕。