当数据对象只有很多很多关系时的空白屏幕
Blank Screen When DataObject Only Has ManyMany Relationship
以下代码为 MyDataObject
创建了一个 ModelAdmin
。添加 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
关系立即存在吗?
如果没有,是否有创建对象然后在没有保存关系的情况下删除它的方法?
如果我没理解错的话,你的Package可以有很多过滤器,一个Filter可以被不同的Package使用。然后你在包和过滤器之间有很多关系。产品列表是动态的,你可以每次计算。
您的用户应该以某种方式引用包,因此它应该有一个 属性 名称,并且您至少有一个输入框来添加新包(而不是现在的空白屏幕)。
更新
您描述的行为是正确的,并且 expected.The ManyManyList
状态与数据库同步,因此在您决定将列表存储在数据库中之前,您不能将项目仅存储在内存中盒子。
您可以将 Add New
按钮替换为您自己的实现以自动创建新对象,将其保存在数据库中并重定向到编辑屏幕。
以下代码为 MyDataObject
创建了一个 ModelAdmin
。添加 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
关系立即存在吗?
如果没有,是否有创建对象然后在没有保存关系的情况下删除它的方法?
如果我没理解错的话,你的Package可以有很多过滤器,一个Filter可以被不同的Package使用。然后你在包和过滤器之间有很多关系。产品列表是动态的,你可以每次计算。
您的用户应该以某种方式引用包,因此它应该有一个 属性 名称,并且您至少有一个输入框来添加新包(而不是现在的空白屏幕)。
更新
您描述的行为是正确的,并且 expected.The ManyManyList
状态与数据库同步,因此在您决定将列表存储在数据库中之前,您不能将项目仅存储在内存中盒子。
您可以将 Add New
按钮替换为您自己的实现以自动创建新对象,将其保存在数据库中并重定向到编辑屏幕。