メイン CakePHP モデル(Model)
Sortableビヘイビア:任意の並べ替え | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| news | 投稿日時: 2008-7-30 11:04 |
Cake 職人 ![]() ![]() 登録日: 2007-4-4 居住地: 投稿: 1277 |
Sortableビヘイビア:任意の並べ替え テーブルに"order"フィールドがある場合、任意に並べ替えられるようにするビヘイビアだそうです。
SortableBehavior: sort your models arbitrarily By Dardo Sordi (dardosordi) http://bakery.cakephp.org/articles/view/sortablebehavior-sort-your-models-arbitrarily |
| jun | 投稿日時: 2009-2-26 15:26 |
Baker スタート ![]() ![]() 登録日: 2009-2-26 居住地: 投稿: 2 |
Re: Sortableビヘイビア:任意の並べ替え 捕捉です
1:A 2:B 3:C 4:D のとき、Cを2にもっていこうとすると、以下のようになります。 1:A 2:C 4:B 5:D 順番は希望通りなのですが、 歯抜けですと気持ち悪く、他の部分に不具合が出てしまいますので、ソースを追ってみました。 なぜ前述した動作になるのかですが、 beforeSaveでorder値を退避させ、いったんorderに最後尾を退避させています。 これにより、上記の例では以下のような状態で一度セーブされるようです。 1:A 2:B 4:D 5:E その後、afterSaveで、setPositionが呼び出され、 上がったのか下がったのかをもとに moveUPかmoveDownを呼び出しています。 つまり5から2に上がるので、 moveUpの動作通り2より大きな値がorderに入っているものをすべて1加算します。 そのため2,4はそれぞれ3,5になり、4が抜けた状態になるようです。 使われている方いらっしゃいましたら不具合がないかお教えいただけますでしょうか? |
| jun | 投稿日時: 2009-2-26 15:37 |
Baker スタート ![]() ![]() 登録日: 2009-2-26 居住地: 投稿: 2 |
Re: Sortableビヘイビア:任意の並べ替え まちがって編集してしまい、前の自分の投稿を消してしまいました。
64行目の $isInsert = !$model->id; でinsertかupdateの判定をしていますが、使われていないので、本来これを使い処理を分ける予定だったなのでは?と勘ぐってしまいます。 使われている方ご報告いただけますと幸いです。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



