Для того, чтобы при нажатии на кнопку «Занести балл» значение переносилось в поле с именем «balls» с помощью AJAX, можно использовать следующий подход:
1. Добавление JavaScript-кода на страницу
Сначала нужно добавить JavaScript-код, который будет обрабатывать клик на кнопке «Занести балл» и отправлять AJAX-запрос:
javascript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $(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
1 | <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
1 2 3 4 5 6 7 8 9 10 11 | 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
1 2 3 4 5 6 7 8 9 | <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
, чтобы они также были отправлены на сервер вместе с данными формы.