У меня есть встроенная редактируемая таблица (для этого я использовал Tableditit ), и каждая строка имеет идентификатор, а идентификаторы должны быть переданы в действие контроллера (Yii2), чтобы я мог сохранить отредактированные данные в базу данных. Вот мой код Tabledit в моем js-файле:
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); } });
Я ожидал, что он укажет на указанный url ( 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', ]); }
Я действительно не знаю, как это понять. Как передать идентификатор контроллеру? Я надеюсь, вы понимаете, это. Пожалуйста, дайте мне знать, если у вас есть вопросы. Если у вас есть другая идея для реализации, сообщите мне об этом.