我正在尝试直接通过文本字段编辑相关数据对象的属性。例如,我有一个与每个页面相关的计数器对象。我可以非常方便地通过文本字段直接编辑计数器对象的值,而不是转到相关对象并在那里编辑它。那可能吗?
我至少可以在文本字段中显示当前值:$fields->addFieldToTab('Root.Main', new TextField('ILikeCount.Count', 'ILikeCount', $this->ILikeCount()->Count), 'Content');
但保存新值不起作用。 很多, 弗洛里安
答案 0 :(得分:0)
也许你可以在onBeforeWrite()
hook
$fields->addFieldToTab('Root.Main', new TextField('ILikeCountCount', 'ILikeCount', $this->ILikeCount()->Count), 'Content');
textField名称可以是任何内容,在这里我只是删除了点缀符号以使事情变得更容易。然后捕获onBeforeWrite()
中的值并更新关系。
public function onBeforeWrite()
{
if( $this->ILikeCountCount )
{
// check if a $has_on realtion exist
if ( !$this->ILikeCountID )
{
// create new DataObject + relation
$ILikeCount = ILikeCount::create();
$ILikeCount->Count = $this->ILikeCountCount;
$ILikeCount->write();
$this->ILikeCountID = $ILikeCount->ID;
}
else{
// update existing relation
$ILikeCount = $this->ILikeCount();
$ILikeCount->Count = $this->ILikeCountCount;
$ILikeCount->write();
}
$this->ILikeCountCount = false; // clear to avoid duplicate writes
}
parent::onBeforeWrite();
}