在其中一个视图中,我实现了一个列表,可以使用jQueryUI Sortable
进行拖放重新排序。
meetings.ctp
中列表的输出如下所示:
<ul id="sortable">
<?php foreach($meetings as $meeting): ?>
<li class="ui-state-default">>
<?php echo $meeting['name'] . ' ' . $meeting[place]; ?>
</li>
<?php endforeach; ?>
</ul>
会议清单基于优先顺序提供:
$upcommingMeetings_query = $this->MeetingsTasks->find('all')
->order(['Meetings.priority' => 'ASC']);
我需要做的是在移动后更新Meeting
记录的优先级。但是,我只能找到如何在旧版本的CakePHP中使用不再可用的JsHelper
找到示例。
非常感谢任何帮助或指导。如果有任何我应该共享的代码,请提出要求。
答案 0 :(得分:1)
首先从第<body <?php body_class(); ?>>
行删除额外的>
,然后使用<li class="ui-state-default">>
的{{1}}事件
stop
您的sortable
代码应该是这样的:
$( "#selector" ).sortable({
stop: function( event, ui ) {
//Invoke the serialize method:
var sorted = $(this).sortable('serialize');
console.log(sorted);
//output: 'sort[]=4&sort[]=1&sort[]=2&sort[]=5&sort[]=3'
//here goes your ajax request to server
$.ajax({
url: 'someURL',
cache: false,
type: 'post',
data: sorted,
success: function(result) {//parse it here}
});
}
});
您可以通过将.ctp
替换为您想要的任何内容来自定义此<ul id="sortable">
<?php foreach($meetings as $meeting): ?>
<li class="ui-state-default" id="sort-<?php echo $meeting['id']; ?>">
<?php echo $meeting['name'] . ' ' . $meeting['place']; ?>
</li>
<?php endforeach; ?>
</ul>
部分。
在控制器部分,您必须在<li class="ui-state-default" id="sort-<?php echo $meeting['id']; ?>">
循环中解析它并相应地更新sort
,否则您可以保存原样。 working link