我试图使用TableField来管理一个页面的相关链接列表。我有控制工作,除了它不是保存id到db(一个隐藏的字段),只是标题和url
这是正确的使用方式吗?是这样认为的。我一直在使用这个:http://doc.silverstripe.org/sapphire/en/reference/tablefield作为指南
一些代码:static $has_many = array (
'Linketys' => 'Linkety',
);
$myTableField = new TableField(
'MyTableField', // fieldName
'Linkety', // sourceType
array(
'Title'=>'Title',
'URL'=>'URL'
), // fieldList
array(
'Title'=>'TextField',
'URL'=>'TextField'
), // fieldTypes
null, // filterField (legacy)
"Linkety.PageID",
$this->ID
);
// add some HiddenFields thats saved with each new row
$myTableField->setExtraData(array(
'PageID' => $this->ID ? $this->ID : '$RecordID'
));
$fields->addFieldToTab("Root.Content.Options", $myTableField);
嗯,文档似乎有点不对劲。
这是我使用表字段的方式,而不是使用extraData
Linkety.php
class Linkety extends DataObject {
public static $db = array(
'Title'=>'Varchar',
'URLSegment'=>'Varchar',
);
public static $has_one = array(
'Page' => 'Page'
);
}
在Page.php $myTableField = new TableField(
'Linkety',
'Linkety',
array('Title'=>'Link title', 'URLSegment'=>'URL'),
array('Title'=>'TextField','URLSegment'=>'TextField'),
'PageID',
$this->ID,
$editExisting=true
);
$fields->addFieldToTab("Root.Content.Options", $myTableField);