使用Reliatarender在10月CMS中添加关系后,如何更新后端表格



我有2个模型预订和与众

我也有一个bookingattendee枢轴模型 - 因此我可以使用这些方法。

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

预订具有一些价格属性,我想每次添加或删除与会者时在页面上更新。

在创建关系之后发生的关系设备上是否有任何类型的方法,可以使我更新页面上的DIV?

根据文档,我可以使用以下4种方法来扩展RelationController

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

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

您必须在关系渲染中添加带有唯一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'),
    ];
}

最新更新