答案 0 :(得分:0)
启用排序很简单:
$('tbody').sortable();
唯一的问题是将排序保存到数据库中。我决定在views / sorted-table / index.php中单击按钮(而不是ajax)后保存它:
if (strpos(Url::current(), 'sort') === false) {
$form = ActiveForm::begin([
'id' => 'sort-form',
]);
echo '<input type="hidden" id="field-sort" name="sort" value="">';
if (isset($sortMessage) && $sortMessage != '') {
echo '<p>' . $sortMessage . '</p>';
}
echo Html::submitButton(Icon::show('floppy-o') . 'Sortierung speichern', ['class' => 'btn btn-primary']);
ActiveForm::end();
DynagridSortAsset::register($this);
}
行的位置由jQuery保存在隐藏的输入字段中:
$('.btn-primary').mousedown(function() {
var sorting = "";
$('.sortable-row').each( function (index, value) {
sorting += $(this).attr('data-id') + ':' + $(this).attr('data-sortierung') +',';
});
$('#field-sortierung').val(sorting);
});
然后在控制器中处理这些值并将其保存到数据库中。