我有2个具有预订关系和出席者关系的模型
我也有一个BookingAttendee枢纽模型-因此,我可以利用它们具有的afterCreate方法。
在我要添加与会者的预订的后端表单中-我正在使用局部视图来与<?= $this->relationRender('attendees') ?>
呈现关系,并且一切正常。
预订有一些价格属性,每次添加或删除与会者时,我都希望在页面上对其进行更新。
在创建关系后,relationWidget上是否发生任何类型的方法,可以让我更新页面上的div?
根据文档,我可以使用以下4种方法在RelationController上进行扩展
relationExtendViewWidget()
relationExtendManageWidget()
relationExtendPivotWidget()
relationExtendRefreshResults()
问题是我不知道如何使用它们来更新页面上的内容。
答案 0 :(得分:0)
您必须在关系渲染中添加具有唯一ID的div。 例如:
<div id="delegates-relation">
<?= $this->relationRender('delegates') ?>
</div>
然后,在您的控制器中,您必须添加relationExtendRefreshResults($field)
方法,并从具有上面定义的ID的关系渲染中返回新的html。
/**
* 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'),
];
}