在OctoberCMS中使用relationRender添加关系后,如何更新后端表单?

问题描述 投票:1回答:1

我有两个模型预订和参加者,有很多关系

我还有一个BookingAttendee枢轴模型 - 所以我可以使用这些的afterCreate方法。

在预订的后端表单中,我想添加与会者 - 我正在使用部分来呈现与<?= $this->relationRender('attendees') ?>的关系,一切正常。

每次添加或删除与会者时,我都希望在页面上更新预订。

在创建一个允许我更新页面div的关系之后,relationWidget上是否有任何类型的方法?

根据文档,我可以使用这四种方法在RelationController上进行扩展

relationExtendViewWidget()
relationExtendManageWidget()
relationExtendPivotWidget()
relationExtendRefreshResults()

问题是我不知道如何使用这些来更新页面上的内容。

pivot octobercms octobercms-plugins octobercms-backend octobercms-widgets
1个回答
0
投票

您必须为关系渲染添加具有唯一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'),
    ];
}
© www.soinside.com 2019 - 2024. All rights reserved.