【发布时间】:2014-10-01 10:27:09
【问题描述】:
我的(部分)数据对象:
class InternalExternalLink extends DataObject {
private static $db = array(
'ExternalLink' => 'VarChar(256)',
'LinkLabel' => 'VarChar(256)',
"LinkType" => "Enum(array('Internal', 'External','Attachment'))"
);
private static $has_one = array(
'InternalLink' => 'SiteTree',
'Attachment' => 'File'
);
function getCMSFields() {
$fields = new FieldList(array(
$internal = DropdownField::create("InternalLinkID", "Choose a page", SiteTree::get()->map()->toArray())->setEmptyString("-- choose --"),
));
return $fields;
}
添加我将此添加到页面:
class Page extends SiteTree {
private static $has_many = array(
'Links' => 'InternalExternalLink'
);
function getCMSFields() {
$fields = parent::getCMSFields();
$gridField = new GridField('Links', 'Links', $this->Links(), GridFieldConfig_RecordEditor::create());
$fields->addFieldsToTab('Root.Main', $gridField);
return $fields;
}
问题是通过网格字段添加链接时,它会自动假定 Link.InternalLink 是父页面,而不是任何页面,并隐藏页面选择下拉菜单。例如。如果我正在编辑 about-us 页面,那么我通过网格字段添加的每个 Link 数据对象都会自动将其 InternalLink 设置为 about-us 页面。
如何更改此假设以允许我通过下拉菜单选择任何页面?
【问题讨论】:
标签: orm silverstripe