我有两个模型预订和参加者,有很多关系
我还有一个BookingAttendee枢轴模型 - 所以我可以使用这些的afterCreate方法。
在预订的后端表单中,我想添加与会者 - 我正在使用部分来呈现与<?= $this->relationRender('attendees') ?>
的关系,一切正常。
每次添加或删除与会者时,我都希望在页面上更新预订。
在创建一个允许我更新页面div的关系之后,relationWidget上是否有任何类型的方法?
根据文档,我可以使用这四种方法在RelationController上进行扩展
relationExtendViewWidget()
relationExtendManageWidget()
relationExtendPivotWidget()
relationExtendRefreshResults()
问题是我不知道如何使用这些来更新页面上的内容。
您必须为关系渲染添加具有唯一ID的div。例如:
<div id="delegates-relation">
<?= $this->relationRender('delegates') ?>
</div>
然后在你的控制器中你必须添加relationExtendRefreshResults($field)
方法并从关系渲染返回你的新html与上面定义的id。
/**
* Update fields after a relation has changed
*
* @param $field the relation field that has changed.
* @return array|null
*/
public function relationExtendRefreshResults($field):? array
{
if ($field !== 'yourField') { // here you can check which field was updated.
return null;
}
return [
'#delegates-relation'=> $this->relationRender('delegates'),
];
}