Когда пользователь нажимает на кнопку «Занести балл», необходимо выполнить следующие действия:
- Получение значения из поля «balls»:
- Получить значение из поля ввода с именем «balls» на странице.
- Это можно сделать с помощью JavaScript, используя селектор
$('input[name="balls"]')
.
- Отправка AJAX-запроса на сервер:
- Отправить AJAX-запрос на сервер, передав в нем значение «balls» и необходимые идентификаторы (например,
id_reestrzayvkistependiy
). - Для этого можно использовать jQuery или встроенный в Yii2 AJAX-функционал.
- Отправить AJAX-запрос на сервер, передав в нем значение «balls» и необходимые идентификаторы (например,
- Обработка AJAX-запроса на сервере:
- На сервере, в контроллере, обработать AJAX-запрос и сохранить переданное значение «balls» в базе данных.
- Для этого можно использовать действие
actionAdd()
, как было показано ранее.
- Обновление страницы или отображение сообщения об успешном сохранении:
- После успешного сохранения данных на сервере, можно либо обновить страницу, чтобы отобразить новое значение «balls», либо показать пользователю сообщение об успешном сохранении.
Вот пример реализации этого процесса с использованием jQuery:
javascript
$(document).ready(function() {
$('.btn-score').click(function() {
var id_reestrzayvkistependiy = $(this).data('id');
var balls = $(this).closest('.card-panel').find('input[name="balls"]').val();
$.ajax({
url: '<?= Url::to(['reestrzayvkistependiy/add']) ?>',
type: 'POST',
data: {
'id_reestrzayvkistependiy': id_reestrzayvkistependiy,
'balls': balls,
'<?= Yii::$app->request->csrfParam ?>': '<?= Yii::$app->request->csrfToken ?>'
},
success: function(data) {
// Обновление страницы или отображение сообщения об успешном сохранении
location.reload();
},
error: function(xhr, status, error) {
// Обработка ошибки
alert('Ошибка при сохранении балла: ' + error);
}
});
});
});
В этом коде мы получаем значение «balls» из поля ввода, отправляем AJAX-запрос на сервер, и после успешного сохранения обновляем страницу, чтобы отобразить новое значение. Если возникает ошибка, мы показываем сообщение об ошибке.
Да, можно изменить значение в поле с именем «balls» без использования AJAX-запроса. Вот как это можно сделать:
javascript
$(document).ready(function() {
$('.btn-score').click(function() {
var ballsValue = $(this).closest('.card-panel').find('b:contains("Балл:")').text().split(':')[1].trim();
$(this).closest('.card-panel').find('input[name="balls"]').val(ballsValue);
});
});
В этом коде мы используем jQuery, чтобы найти элемент, содержащий текст «Балл:», извлечь значение после двоеточия и установить его в поле ввода с именем «balls». Таким образом, при нажатии на кнопку «Занести балл», значение <?= $rz->portfolio->activework->balls ?>
будет автоматически перенесено в поле ввода, без необходимости отправки AJAX-запроса. Это более простой подход, который позволяет избежать лишней сетевой активности и сразу обновить значение на странице.