2
私は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フィールドをすべて変更させる拡張フックを持っているので、これを使うのが良い方法です。 –