参考:http://api.jqueryui.com/sortable/#method-serialize
ここで、item_1、item_2といった感じで連番ふるよといいましたが、どちらかというと並び替えの場合、並び替え対象でDBのIDで管理しないといけないと思いますので、item_idという感じにした方がよかったです。
cakePHPだと、下記のような感じにするといいのではないでしょうか。
item_<?php echo h($item['Item']['id'])?>
$(this).sortable('serialize');で下記のようなデータが得られます。
item[]=2&item[]=1
2と1がIDであれば、これをそのままAjaxでsortアクションなんかに渡します。 以下は例です。
function save_sort(sort_data){
$.ajax({
type:'post',
url: '<?php echo $this->Html->url(array( 'controller' => 'hogehoge', 'action' => 'sort'))?>',
data: sort_data,
dataType: 'html',
async: true,
success: function(data){
alert('sort ok!');
}
});
}
$(function(){
$('#sortable').sortable({
cursor: 'move',
opacity: 0.7,
placeholder: "placeholder",
forcePlaceholderSize: true,
cancel:false,
handle:'.move_btn',
update: function(event, ui){
save_sort($(this).sortable('serialize'));
}
});
});
これでhogehogeコントローラーのsortアクションにアクセスしてくれて、$this->request->dataの中にソートデータが下記のように入っております。Formのシリアライズと一緒です。便利です。
