首页 > 解决方案 > 有没有我可以听的重新排序事件?

问题描述

在后端,每当我的模型被修改时,我都需要导出数据文件,无论它是保存、更新还是重新排序。除了重新排序(拖放功能,即重新排序行为)之外,以下功能工作得很好。任何人都可以建议一种处理重新排序的方法吗?

// after the model is saved, either created or updated.   
public function afterSave()
{
  // export data here or fire the my export event
}

标签: octobercms

解决方案


嗯,似乎有一个特征正在做soting工作sorting and saving

它位于此处,vendor\october\rain\src\Database\Traits\Sortable.php将其添加到模型中以使其可排序。

/**
 * Sets the sort order of records to the specified orders. If the orders is
 * undefined, the record identifier is used.
 * @param  mixed $itemIds
 * @param  array $itemOrders
 * @return void
 */
public function setSortableOrder($itemIds, $itemOrders = null)
{
    if (!is_array($itemIds)) {
        $itemIds = [$itemIds];
    }

    if ($itemOrders === null) {
        $itemOrders = $itemIds;
    }

    if (count($itemIds) != count($itemOrders)) {
        throw new Exception('Invalid setSortableOrder call - count of itemIds do not match count of itemOrders');
    }

    foreach ($itemIds as $index => $id) {
        $order = $itemOrders[$index];
        $this->newQuery()->where($this->getKeyName(), $id)->update([$this->getSortOrderColumn() => $order]);
        // ======================================= 
        // YOUR EXPORT CODE CAN BE HERE
        // =======================================
    }
}

这个方法是什么时候调用的sorting happens,所以可能只是copy this method code in your modeloverride default behaviorexport logic这个方法里面,每次都会被调用sorting happens

到目前为止,我想这是我发现的最简单的逻辑。

如有任何疑问,请发表评论。


推荐阅读