From be1ba308c9eee1def85d45a562e1a2d97bcd0466 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Fri, 27 Mar 2026 11:54:48 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=20=D0=9A=D0=B0=D1=80=D1=82=D0=B8=D0=BD?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B2=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0?= =?UTF-8?q?=D1=85=20+=20toggleCorrect=20=D0=B8=D0=BA=D0=BE=D0=BD=D0=BA?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ store/update используют $request->file() для загрузки ✅ toggleCorrect работает с icon.classList вместо innerHTML ✅ Исправлено наследование цвета иконки от кнопки Co-authored-by: Qwen-Coder --- .../Controllers/Admin/QuestionController.php | 17 ++++++++++------- .../views/admin/questions/create.blade.php | 7 +++++-- resources/views/admin/questions/edit.blade.php | 7 +++++-- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Admin/QuestionController.php b/app/Http/Controllers/Admin/QuestionController.php index 09a7b3a..8a4a54e 100755 --- a/app/Http/Controllers/Admin/QuestionController.php +++ b/app/Http/Controllers/Admin/QuestionController.php @@ -38,7 +38,7 @@ class QuestionController extends Controller public function store(Request $request, Test $test) { Gate::authorize('create', Question::class); - + $validated = $request->validate([ 'type' => 'required|in:multiple_choice,matching,ordering', 'question_text' => 'required|string', @@ -53,6 +53,9 @@ class QuestionController extends Controller 'ordering_items' => 'nullable|array', ]); + // Получаем картинки из request напрямую (не через validate) + $answersImages = $request->input('answers', []); + // Проверка что есть хотя бы текст или картинка в ответах if ($validated['type'] === 'multiple_choice' && !empty($validated['answers'])) { $hasValidAnswer = false; @@ -79,14 +82,14 @@ class QuestionController extends Controller // Ответы для multiple_choice if ($validated['type'] === 'multiple_choice' && !empty($validated['answers'])) { - foreach ($validated['answers'] as $answer) { + foreach ($validated['answers'] as $index => $answer) { $hasText = !empty($answer['text']); - $hasImage = !empty($answer['image']); + $hasImage = $request->hasFile("answers.$index.image"); if ($hasText || $hasImage) { $imagePath = null; if ($hasImage) { - $imagePath = $answer['image']->store('questions/answers', 'public'); + $imagePath = $request->file("answers.$index.image")->store('questions/answers', 'public'); } $question->answers()->create([ 'answer_text' => $hasText ? $answer['text'] : null, @@ -189,14 +192,14 @@ class QuestionController extends Controller // Ответы if ($validated['type'] === 'multiple_choice' && !empty($validated['answers'])) { $question->answers()->delete(); - foreach ($validated['answers'] as $answer) { + foreach ($validated['answers'] as $index => $answer) { $hasText = !empty($answer['text']); - $hasImage = !empty($answer['image']); + $hasImage = $request->hasFile("answers.$index.image"); if ($hasText || $hasImage) { $imagePath = null; if ($hasImage) { - $imagePath = $answer['image']->store('questions/answers', 'public'); + $imagePath = $request->file("answers.$index.image")->store('questions/answers', 'public'); } $question->answers()->create([ 'answer_text' => $hasText ? $answer['text'] : null, diff --git a/resources/views/admin/questions/create.blade.php b/resources/views/admin/questions/create.blade.php index 83e90eb..a92d204 100644 --- a/resources/views/admin/questions/create.blade.php +++ b/resources/views/admin/questions/create.blade.php @@ -150,14 +150,17 @@ function removeAnswer(btn) { btn.parentElement.remove(); } function toggleCorrect(btn) { const inputGroup = btn.parentElement; const hidden = inputGroup.querySelector('input[type="hidden"][name*="is_correct"]'); + const icon = btn.querySelector('i'); if (hidden.value === '0') { hidden.value = '1'; - btn.innerHTML = ''; + icon.classList.remove('bi-circle'); + icon.classList.add('bi-check-circle-fill'); btn.classList.remove('btn-outline-success'); btn.classList.add('btn-success'); } else { hidden.value = '0'; - btn.innerHTML = ''; + icon.classList.remove('bi-check-circle-fill'); + icon.classList.add('bi-circle'); btn.classList.remove('btn-success'); btn.classList.add('btn-outline-success'); } diff --git a/resources/views/admin/questions/edit.blade.php b/resources/views/admin/questions/edit.blade.php index 05b1e90..db908a7 100644 --- a/resources/views/admin/questions/edit.blade.php +++ b/resources/views/admin/questions/edit.blade.php @@ -176,14 +176,17 @@ function removeAnswer(btn) { btn.parentElement.remove(); } function toggleCorrect(btn) { const inputGroup = btn.parentElement; const hidden = inputGroup.querySelector('input[type="hidden"][name*="is_correct"]'); + const icon = btn.querySelector('i'); if (hidden.value === '0') { hidden.value = '1'; - btn.innerHTML = ''; + icon.classList.remove('bi-circle'); + icon.classList.add('bi-check-circle-fill'); btn.classList.remove('btn-outline-success'); btn.classList.add('btn-success'); } else { hidden.value = '0'; - btn.innerHTML = ''; + icon.classList.remove('bi-check-circle-fill'); + icon.classList.add('bi-circle'); btn.classList.remove('btn-success'); btn.classList.add('btn-outline-success'); }