2
我正在延伸ModelAdmin
来管理DataObject
,我有$has_many
的关系由另一个DataObject
管理。我想在另一个选项卡上管理这个对象,但是我怎么会添加它。我的基本代码:ModelAdmin与has_many的关系
ApplicationAdmin.php:
class Applications extends ModelAdmin {
private static $menu_title = 'Applications';
private static $url_segment = 'apps';
private static $managed_models = array (
'Application'
);
}
Application.php
class Application extends DataObject {
private static $db = array(
'Name' => "varchar"
);
private static $has_many = array(
'Documents' => 'Document',
);
public function getCMSFields() {
$fields = FieldList::create(
TextField::create('Name'),
);
return $fields;
}
}
Document.php
class Document extends DataObject {
private static $db = array(
'Title' => "varchar",
);
private static $has_one = array(
"Document" => "File",
"Application" => "Application"
);
public function getCMSFields() {
$fields = FieldList::create(
TextField::create('Title'),
$doc = new UploadField('Document')
);
$doc->getValidator()->setAllowedExtensions(array('pdf', 'docx'));
return $fields;
}
}
基本上我想管理此文件根据Root.Documents
标签进入。
谢谢。我很好奇,如果我没有为'Root.Main'添加'addFieldToTab',我的字段仍然出现。这是因为父母正在创建默认的? – Rudiger
@Rudiger,您可以在DataObject.php中查看'getCMSFields()'并跟踪从那里到这些字段自动生成的地方。使用'$ fields = parent :: getCMSFields();'是一个很好的习惯,因为它有一个扩展挂钩,它允许模块修改所有'DataObjects''cms字段。 –