我有一个内联可编辑表(我为此使用了Tabledit)并且每行都有一个ID,ID应该传递给控制器操作(Yii2),以便我将编辑后的数据保存到数据库中。这是我的js文件中的Tabledit代码:
Test.class.getClassLoader().getResourceAsStream("test.json")
我希望在保存内联编辑后,它会指向指定的网址{file.assetID = info.response; // the ID
for (var i = 0; i < file.length; i++) { // the table
if (file[i].type == "image/jpeg") {
var type = "photo";
} else if (file[i].type == "video/mp4") {
var type = "video";
}
messageHtml += '<tr id="' + file[i].assetID + '">';
messageHtml += '<td style="display:none;" id="' + file[i].assetID + '">' + file[i].assetID + '</td>';
messageHtml += '<td>' + file[i].name + '</td>';
messageHtml += '<td>' + type + '</td>';
messageHtml += '<td>' + file[i].size + " KB" + '</td>';
messageHtml += '<td><input type="text" class="form-control" placeholder="Tag"></td>';
messageHtml += '<td><input type="text" class="form-control" placeholder="Description"></td>';
messageHtml += '</tr>';
}
var urlID = "../save-inline-edit/" + file[0].assetID; // url plus the ID of the row
$('#uploader_table').Tabledit({
url: urlID,
columns: {
identifier: [0, 'id'],
editable: [[1, file.name]/*, [3, file.tag], [4, file.description]*/]
},
onSuccess: function(data, textStatus, jqXHR) {
console.log(data);
console.log(textStatus);
console.log(jqXHR);
},
onFail: function(jqXHR, textStatus, errorThrown) {
console.log(file.assetID);
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
urlID
,其中save-inline-edit
是我的控制器中的动作函数 - public function actionSaveInlineEdit($id){...}
)检查元素(保存后),它给了我这个错误:
然后我放置了一个console.log
来查看错误详细信息,我得到了这个:
“错误请求(#400):缺少必需参数:id”
这是我的控制器动作:
public function actionSaveInlineEdit($id)
{
header('Content-Type: application/json');
$assetModel = $this->findModel($id);
$input = filter_input_array(INPUT_POST);
if ($input['action'] === 'edit') {
$assetModel->title = "";
$assetModel->description = "";
$assetModel->save(false);
} else if ($input['action'] === 'delete') {
$assetModel->status = "deleted";
$assetModel->save(false);
}
echo json_encode($input);
return \yii\helpers\Json::encode([
'message' => 'success',
]);
}
我真的不知道如何解决这个问题。如何将id传递给控制器?我希望你明白这一点。如果您有任何疑问,请告诉我。如果您对实施有其他想法,请告诉我。
答案 0 :(得分:1)
当您将id作为file.assetID放入代码的开头并使用文件[0]获取id .assetID
请使用file.assetID获取网址中的ID。
由于