Для того, чтобы при нажатии на кнопку «Занести балл» значение переносилось в поле с именем «balls» с помощью AJAX, можно использовать следующий подход:
1. Добавление JavaScript-кода на страницу
Сначала нужно добавить JavaScript-код, который будет обрабатывать клик на кнопке «Занести балл» и отправлять AJAX-запрос:
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) {
// Обработка успешного ответа от сервера
console.log('Балл успешно сохранен');
},
error: function(xhr, status, error) {
// Обработка ошибки
console.log('Ошибка при сохранении балла: ' + error);
}
});
});
});
2. Изменение HTML-кода кнопки «Занести балл»
Теперь нужно изменить HTML-код кнопки «Занести балл», чтобы она могла работать с AJAX-запросом:
html
<button class="btn-score waves-effect waves-light btn-small" data-id="<?= $rz->id_reestrzayvkistependiy ?>">Занести балл</button>
Обратите внимание, что мы добавили атрибут data-id
с идентификатором записи id_reestrzayvkistependiy
.
3. Обработка AJAX-запроса в контроллере
В контроллере ReestrzayvkistependiyController
нужно добавить действие add
, которое будет обрабатывать AJAX-запрос:
php
public function actionAdd()
{
$id_reestrzayvkistependiy = Yii::$app->request->post('id_reestrzayvkistependiy');
$balls = Yii::$app->request->post('balls');
$model = $this->findModel($id_reestrzayvkistependiy);
$model->balls = $balls;
$model->save();
return $this->asJson(['success' => true]);
}
В этом действии мы получаем значения id_reestrzayvkistependiy
и balls
из POST-запроса, находим модель по id_reestrzayvkistependiy
, обновляем значение balls
и сохраняем изменения. Затем возвращаем JSON-ответ с информацией об успешном сохранении.
Да, можно использовать значение из $rz->portfolio->activework->balls
и присвоить его элементу с атрибутом name="balls"
. Вот как это можно сделать:
html
<form action="<?= Url::to(['reestrzayvkistependiy/add']) ?>" method="post">
<?= Html::hiddenInput(Yii::$app->request->csrfParam, Yii::$app->request->csrfToken) ?>
<div class="input-field">
<input type="text" name="balls" placeholder="Введите данные" value="<?= $rz->portfolio->activework->balls ?>">
<input type="hidden" name="id_reestrzayvkistependiy" value="<?= $rz->id_reestrzayvkistependiy ?>">
<input type="hidden" name="id_zayvkastependiy" value="<?= $rz->zayvkastependiy->id_zayvkastependiy ?>">
</div>
<button type="submit" class="waves-effect waves-light btn-small">Подписать</button>
</form>
В этом коде мы используем значение $rz->portfolio->activework->balls
в качестве значения атрибута value
для поля ввода с именем balls
. Таким образом, при отображении формы, это значение будет предварительно заполнено в поле. Когда пользователь нажимает на кнопку «Подписать», значение из этого поля будет отправлено на сервер вместе с другими данными формы. Обратите внимание, что мы также добавили скрытые поля для id_reestrzayvkistependiy
и id_zayvkastependiy
, чтобы они также были отправлены на сервер вместе с данными формы.