DataObject
을 관리하기 위해 ModelAdmin
을 확장 중이며 DataObject
에 의해 관리되는 $has_many
관계가 있습니다. 다른 탭에서이 객체를 관리하고 싶습니다. 그러나 어떻게 추가 할 것인가는 분실했습니다. 내 기본 코드 :has_many 관계가있는 ModelAdmin
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 필드를 수정할 수있게 해주는 확장 훅을 가지고 있기 때문이다. –