From a34c2e2812ec9289d9a2a850b8bdddee671d1be7 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Thu, 26 Mar 2026 15:45:14 +0800 Subject: [PATCH] =?UTF-8?q?Feat:=20CRUD=20=D0=B2=D0=BE=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=81=D0=BE=D0=B2=20(=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=BE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ QuestionController (resource) ✅ QuestionPolicy ✅ Маршруты: /admin/tests/{test}/questions ✅ Blade-шаблоны: index, create (с JS для динамических ответов) ✅ Поддержка типов: single_choice, multiple_choice, input, matching ✅ Интеграция в show теста Co-authored-by: Qwen-Coder --- .../Controllers/Admin/QuestionController.php | 65 ++++++++++ app/Policies/QuestionPolicy.php | 66 ++++++++++ app/Providers/AuthServiceProvider.php | 1 + .../views/admin/questions/create.blade.php | 119 ++++++++++++++++++ .../views/admin/questions/index.blade.php | 45 +++++++ resources/views/admin/tests/show.blade.php | 2 +- routes/web.php | 1 + 7 files changed, 298 insertions(+), 1 deletion(-) create mode 100755 app/Http/Controllers/Admin/QuestionController.php create mode 100755 app/Policies/QuestionPolicy.php create mode 100644 resources/views/admin/questions/create.blade.php create mode 100644 resources/views/admin/questions/index.blade.php diff --git a/app/Http/Controllers/Admin/QuestionController.php b/app/Http/Controllers/Admin/QuestionController.php new file mode 100755 index 0000000..9ea3a2c --- /dev/null +++ b/app/Http/Controllers/Admin/QuestionController.php @@ -0,0 +1,65 @@ + CourseCategoryPolicy::class, Course::class => CoursePolicy::class, Test::class => TestPolicy::class, + Question::class => QuestionPolicy::class, Organization::class => OrganizationPolicy::class, Group::class => GroupPolicy::class, User::class => UserPolicy::class, diff --git a/resources/views/admin/questions/create.blade.php b/resources/views/admin/questions/create.blade.php new file mode 100644 index 0000000..6701449 --- /dev/null +++ b/resources/views/admin/questions/create.blade.php @@ -0,0 +1,119 @@ +@extends('layouts.app') +@section('title', 'Добавить вопрос') +@section('content') +
+
+ +
+
+

Добавить вопрос

+ Назад +
+
+ @csrf + +
+
+
+
+
+ + +
+
+ + +
+
+ + + Отображается после ответа +
+ + +
+ +
+
+ + + + +
+
+ +
+ + + +
+
+
+
+
+
+
Настройки
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ + Отмена +
+
+
+
+ +@endsection diff --git a/resources/views/admin/questions/index.blade.php b/resources/views/admin/questions/index.blade.php new file mode 100644 index 0000000..5847984 --- /dev/null +++ b/resources/views/admin/questions/index.blade.php @@ -0,0 +1,45 @@ +@extends('layouts.app') +@section('title', 'Вопросы теста') +@section('content') +
+
+ +
+
+

Вопросы: {{ $test->title }}

+ Добавить вопрос +
+ @if(session('success'))
{{ session('success') }}
@endif + + +
+
+ @forelse($questions as $question) +
+
+
+
+ {{ $question->type }} + #{{ $loop->iteration }}. {{ Str::limit($question->question_text, 100) }} +
+ {{ $question->answers->count() }} ответов + @if($question->is_required)Обязательный@endif + {{ $question->score }} балл(а) +
+
+
+ +
@csrf @method('DELETE')
+
+
+
+
+ @empty +

Нет вопросов. Добавьте первый вопрос!

+ @endforelse +
+
+
+
+
+@endsection diff --git a/resources/views/admin/tests/show.blade.php b/resources/views/admin/tests/show.blade.php index 5cfea53..a65ca99 100644 --- a/resources/views/admin/tests/show.blade.php +++ b/resources/views/admin/tests/show.blade.php @@ -36,7 +36,7 @@
Вопросы
- +
@if($test->questions->count() > 0) diff --git a/routes/web.php b/routes/web.php index 5294e28..9d4ade7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -45,5 +45,6 @@ Route::middleware('auth')->group(function () { Route::resource('course-categories', CourseCategoryController::class); Route::resource('courses', CourseController::class); Route::resource('courses.tests', TestController::class); + Route::resource('tests.questions', QuestionController::class); }); });