gpt4 book ai didi

javascript - 重新排序关联模型 laravel

转载 作者:行者123 更新时间:2023-11-29 20:12:39 26 4
gpt4 key购买 nike

在我的数据库中,我有一个项目表,按数字“位置”列排序。每个位置都是唯一的,它们定义了数据的显示方式(例如,首先显示 1,最后显示 10)。

我正在尝试编写一个 Controller ,它允许我做两件关键的事情:

首先,我需要能够将任何项目向上或向下移动一个位置(显然,如果它已经位于开头或结尾,则无法分别向上或向下移动)。

其次,我希望能够使用拖放界面对项目重新排序。我找到了这样的接口(interface),但我不知道如何使用。

如果您曾经成功地实现了表格的重新排序功能,无论是使用拖放还是“向上”和“向下”按钮,请帮助我!事实证明这非常非常复杂,但它对我的网站非常重要。我不完全是 Laravel 的新手,只是我低估了做到这一点的难度!

最佳答案

我刚刚解决了完全相同的问题。我会拆解我是如何处理的。

对于客户端,我使用了 this图书馆。

Javascript:

$( document ).ready(function() {
$("#table-categories").rowSorter({
onDrop: function(tbody, row, new_index, old_index) {
$.post("/path/to/api/priority", {old_index: old_index + 1, new_index: new_index + 1, _token: "<?php echo csrf_token(); ?>" }, function(result){
console.log('server result: ' + result);
});
},
});
});

请注意 old_indexnew_index 上的 +1,因为我没有覆盖行排序器库上的行索引,但我的 priority 索引模型从 1 开始,而不是 0。如果从 0 开始,只需按原样发送索引即可。

服务器端(Laravel Controller ):

public function priority()
{
$old = \Input::get('old_index');
$new = \Input::get('new_index');

foreach (\App\Category::all() as $category)
{
if ($category->priority == $old)
{
$category->priority = $new;
$category->save();
}
else
{
if ($old < $new)
{
if ($category->priority <= $new AND $category->priority >= $old)
{
$category->priority -= 1;
$category->save();
}
}
else
{
if ($category->priority <= $old AND $category->priority >= $new)
{
$category->priority += 1;
$category->save();
}
}
}
}

return 'OK';
}

注意:此逻辑唯一缺少的实现是处理从表中插入或删除行时的优先级,请记住实现它们。如果您在执行此操作时遇到问题,请告诉我,以便我添加实现。

关于javascript - 重新排序关联模型 laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39987535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com