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');
}