Prechádzať zdrojové kódy

Add author index, add author form

Be sure to `php artisan migrate:fresh`
axkuhta 1 rok pred
rodič
commit
dd2dff261f

+ 40 - 0
app/Http/Controllers/AuthorController.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use App\Models\Author;
+
+class AuthorController extends Controller {
+	function index() {
+		$authors = Author::all();
+
+		return view("authors", ["rows" => $authors]);
+	}
+
+	function add() {
+		return view("add_author_form");
+	}
+
+	function view($id) {
+		return ["id" => $id];
+	}
+
+	function store(Request $request) {
+		$request->validate([
+			"name" => "required",
+			"description" => "nullable"
+		], [
+			"name" => "Автор должен иметь имя."
+		]);
+
+		$arr = $request;
+
+		$author = new Author;
+		$author->name = $arr->name;
+		$author->description = $arr->description;
+		$author->save();
+
+		return view("success");
+	}
+}

+ 2 - 0
database/migrations/2023_11_02_092818_create_authors_table.php

@@ -14,6 +14,8 @@ return new class extends Migration
         Schema::create('authors', function (Blueprint $table) {
             $table->id();
             $table->timestamps();
+            $table->string("name");
+            $table->text("description")->nullable();
         });
     }
 

+ 30 - 0
resources/views/add_author_form.blade.php

@@ -0,0 +1,30 @@
+@extends("layouts.app")
+
+@section("content")
+<h1>Добавление автора</h1>
+<form method="POST" action="">
+	@csrf
+
+	<div>
+		<label>
+			<div>Имя:</div>
+			<input type="text" name="name" placeholder="Имя автора..." value="{{ old("name") }}">
+			@error("name")
+				<span class="alert">{{ $message }}</span>
+			@enderror
+		</label>
+	</div>
+
+	<div>
+		<label>
+			<div>Описание:</div>
+			<textarea name="description" placeholder="Описание...">{{ old("description") }}</textarea>
+			@error("description")
+				<span class="alert">{{ $message }}</span>
+			@enderror
+		</label>
+	</div>
+
+	<input type="submit">
+</form>
+@endsection

+ 18 - 0
resources/views/authors.blade.php

@@ -0,0 +1,18 @@
+@extends("layouts.app")
+
+@section("content")
+<h1>Все авторы</h1>
+<table>
+<tr>
+	<th>Имя</th>
+	<th>Описание</th>
+</tr>
+@foreach ($rows as $row)
+	<tr>
+		<td>{{$row->name}}</td>
+		<td>{{$row->description}}</td>
+	</tr>
+@endforeach
+</table>
+<p><a href="/author/add">Добавить автора</a></p>
+@endsection

+ 6 - 0
routes/web.php

@@ -23,3 +23,9 @@ Route::get('/books', [Controllers\BookController::class, 'index']);
 Route::get('/book/add', [Controllers\BookController::class, 'add']);
 Route::get('/book/{id}', [Controllers\BookController::class, 'view']);
 Route::post('/book/add', [Controllers\BookController::class, 'store']);
+
+// Авторы
+Route::get('/authors', [Controllers\AuthorController::class, 'index']);
+Route::get('/author/add', [Controllers\AuthorController::class, 'add']);
+Route::get('/author/{id}', [Controllers\AuthorController::class, 'view']);
+Route::post('/author/add', [Controllers\AuthorController::class, 'store']);