octobercms - 有没有我可以听的重新排序事件?
问题描述
在后端,每当我的模型被修改时,我都需要导出数据文件,无论它是保存、更新还是重新排序。除了重新排序(拖放功能,即重新排序行为)之外,以下功能工作得很好。任何人都可以建议一种处理重新排序的方法吗?
// after the model is saved, either created or updated.
public function afterSave()
{
// export data here or fire the my export event
}
解决方案
嗯,似乎有一个特征正在做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 model
写override default behavior
在export logic
这个方法里面,每次都会被调用sorting happens
到目前为止,我想这是我发现的最简单的逻辑。
如有任何疑问,请发表评论。
推荐阅读
- sql - MsSql:如何在“LIKE”运算符的查询中传递参数而不是静态值
- spring - 时间戳转换器在 Spring Data Rest 中无法使用 Spanner
- java - 如何基于时间多次显示textView
- azure - Azure Blob 存储 - 下载和上传时的内容类型设置
- android - 如何从 imageView 获取图像?
- python - 比较 3 个数组以查找模式和格式化输出
- google-apps-script - 有没有办法使用 Google CalendarApp 脚本从谷歌日历中获取预约空档数据?
- python - 使用 Python 3 和 Numpy 显示每个元素相对于列总数的百分比值的最佳方法是什么?
- asp.net-web-api - 用于批处理操作的 HTTP 动词
- python-3.x - 如何识别变量并从python中的文本文件中分配值?