當添加很像項目many_many關係輔導者的silverstripe指南中關係:
http://doc.silverstripe.org/framework/en/tutorials/5-dataobject-relationship-management
我想記錄對關係的屬性。所以例如「積極」 - 項目導師的是/否領域。但是,導師對於與其相關的不同項目可能具有不同的活躍價值。
Silverstripe內置工具的最佳實現方式是什麼?
UPDATE 在IRC的一些幫助下&下面的答案。香港專業教育學院接近一點,有點不工作。我發現這個: https://github.com/chillu/silverstripe-framework/blob/c8136f5d4c8a37a4da274cd1c93907c0a2af86a7/docs/en/reference/grid-field.md 這似乎非常相關。
so DebatePages擁有many_many專門小組成員,他們可以在每次辯論中進行不同的投票。
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);
}
}
好,謝謝。我在3.0上,但它看起來也許這在那裏也可以嗎?有沒有關於此的任何文檔?不能完全得到它的工作 – Will
$ config var - 那是什麼。它導致「調用成員函數getComponentByType()在非對象」錯誤 – Will
在SS 3.1 beta 1中引入了通過GridField編輯ManyMany字段,因此如果您在3.0上,則無法使用它。您可以查看提交併將其移植到3.0(https://github.com/silverstripe/silverstripe-framework/commit/c8136f5d4c8a37a4da274cd1c93907c0a2af86a)或升級到3.1,這可能是一個好主意,並且不會太多。 '$ config' var是創建GridField的一部分,它是一個非常短的代碼片段,所以沒有以前的所有部件,我已經使用整個GridField代碼編輯了上面的答案,並添加了一個鏈接文件。 – colymba