同样的问题,通过阅读我注意到的代码:
// Compute position if it is negative
if ($newPosition < 0) {
$newPosition += $this->maxPositions[$hash] + 2; // position == -1 => append at end of list
if ($newPosition < 0) $newPosition = 0;
}
(在SortableListener:141中)
我想通过设置-1
为位置,它将被移动到列表的末尾。并将-2
其放在倒数第二位。
编辑:对不起,我回答得太快了,我还想补充:
我认为你不需要自己限制位置,SortableListener
意志:
// Set position to max position if it is too big
$newPosition = min(array($this->maxPositions[$hash] + 1, $newPosition));
因此,您的moveUp()
功能可能是(顺便说一句,您是否反转了moveUp
?moveDown
):
public function moveUp()
{
if ($this->position != 0) {
$this->position--;
}
}
public function moveDown()
{
$this->position++;
}
更新:经过一些测试,事实证明该功能存在错误。
setPosition(-1)
会将对象放在列表的末尾,但会在位置上产生间隙。
我在这里转载了它:https ://github.com/l3pp4rd/DoctrineExtensions/pull/908
我希望它会得到修复。