При добавлении отношения many_many, очень похожего на отношения проектов и наставников в серебрянной полосе:
http://doc.silverstripe.org/framework/en/tutorials/5-dataobject-relationship-management
Я хотел бы записать атрибут против отношения. Так, например, «активный» - поле «да / нет» для наставника по проекту. Но наставник может иметь разную ценность для разных проектов, к которым он относится.
Как лучше всего добиться этого с помощью встроенных инструментов Silverstripe?
ОБНОВЛЕНИЕ с помощью IRC и ответа ниже. Я подошел немного ближе, но это не работает. Я нашел это: , что кажется очень актуальным.
поэтому на DebatePages есть много_многих участников дискуссии, которые могут голосовать по-разному в каждом обсуждении.
DebatePage.php
private static $many_many = array(
'Panelists' => 'Panelist',
'RelationTags' => 'Tag'
);
public static $many_many_extraFields = array(
'Panelists' => array('Motion' => 'Boolean')
);
public function getCMSFields() {
.....
if($this->ID) {
$panelistFields = singleton('Panelist')->getCMSFields();
$panelistFields->addFieldToTab(
'Root.Main',
// Please follow the "ManyMany[<extradata-name>]" convention
new TextField('ManyMany[Motion]', 'Agree with Motion')
);
$config = GridFieldConfig_RelationEditor::create();
$config->getComponentByType('GridFieldDetailForm')->setFields($panelistFields);
$gridField = new GridField('Panelists', 'Panelists', $this->Panelists(), $config);
$fields->findOrMakeTab('Root.Panelists')->replaceField('Panelist', $gridField);
}
}