Обработка нажатия на кнопку «Занести балл»

Когда пользователь нажимает на кнопку «Занести балл», необходимо выполнить следующие действия:

  1. Получение значения из поля «balls»:
    • Получить значение из поля ввода с именем «balls» на странице.
    • Это можно сделать с помощью JavaScript, используя селектор $('input[name="balls"]').
  2. Отправка AJAX-запроса на сервер:
    • Отправить AJAX-запрос на сервер, передав в нем значение «balls» и необходимые идентификаторы (например, id_reestrzayvkistependiy).
    • Для этого можно использовать jQuery или встроенный в Yii2 AJAX-функционал.
  3. Обработка AJAX-запроса на сервере:
    • На сервере, в контроллере, обработать AJAX-запрос и сохранить переданное значение «balls» в базе данных.
    • Для этого можно использовать действие actionAdd(), как было показано ранее.
  4. Обновление страницы или отображение сообщения об успешном сохранении:
    • После успешного сохранения данных на сервере, можно либо обновить страницу, чтобы отобразить новое значение «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-запроса. Это более простой подход, который позволяет избежать лишней сетевой активности и сразу обновить значение на странице.