У меня есть DataObject с именем ContentSection
, который имеет 2 отношения has_one: к типу страницы LandingPage
и другому DataObject Person
.Silverstripe удалить нерелевантные поля отношений has_one на вкладке CMS
class ContentSection extends DataObject {
protected static $has_one = array(
'Person' => 'Person',
'LandingPage' => 'LandingPage'
);
}
Как LandingPage, так и Person определяют отношение has_many к ContentSection.
class LandingPage extends Page {
protected static $has_many = array(
'ContentSections' => 'ContentSection'
);
}
class Person extends DataObject {
protected static $has_many = array(
'ContentSections' => 'ContentSection'
);
}
ContentSections редактируются через LandingPage и человек с GridFieldConfig_RelationEditor
.: например
function getCMSFields() {
$fields = parent::getCMSFields();
$config = GridFieldConfig_RelationEditor::create(10);
$fields->addFieldToTab('Root.Content', new GridField('ContentSections', 'Content Sections', $this->ContentSections(), $config));
return $fields;
}
Мой вопрос как можно скрыть/удалить ненужные поля HAS_ONE на вкладке редактора CMS? Поля раскрытия отношения Person и LandingPage отображаются как при редактировании ContentSection, так и для Person или LandingPage. Я хочу показать только соответствующее поле отношений has_one. Я попытался с помощью точечной нотации на has_many отношений:
class Person extends DataObject {
protected static $has_many = array(
'ContentSections' => 'ContentSection.Person'
);
}
Я также попытался с помощью метода removeFieldFromTab
в getCMSFields
способе ContentSection
класса, где я определяю другие поля CMS для ContentSection:
$fields->removeFieldFromTab('Root.Main', 'Person');