0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CakePHPでドラッグアンドドロップで表示順を並び替える。

Last updated at Posted at 2024-08-17

参考にした記事

上記の記事を参考にして、ドラッグアンドドロップでのデータの表示順並べ替え機能を実装していたところ、時折、うまくいかない(保存されない)ことがあった。
原因が分かったので、その対応策を備忘録的に記録しておきます。

原因について

下記は、参考にした記事から引用したもの。
新たな表示順を割り振る箇所。

    for ($i = 0; $i < count($article_list); $i++) {
        $num = $result[$i];
        $article_list[$num]['Article']['order'] = $i;
        $this->Article->save($article_list[$num]);
    }

原因は、参考記事の方法だと表示順のカラムとなるorderの値が連番になっていないといけないからだった。
私が、開発していたwebアプリでは、並べ替え機能の他に削除機能も搭載していたから、削除した際に連番ではなくなってしまう。
考えられる対策としては、削除をするか、並べ替えをするときに、再度、番号を昇順で付け直すことだろう。
削除機能は、CakephpのpostLinkで実装していたので、今回は、後者を選んだ。
引用したコードの前に下記のコードを実行すれば行けるはず。

    for ($i = 0; $i < count($article_list); $i++) {
        $article_list[$i]['Article']['order'] = $i;
        $this->Article->save($article_list[$num]);
    }

もっと良い方法があれば、コメントで教えてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?