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字段。 –