axkuhta 1 éve
szülő
commit
9f1fd9ea13

+ 6 - 1
app/Http/Controllers/BookController.php

@@ -25,8 +25,13 @@ class BookController extends Controller {
 		return view("book", ["book" => $book]);
 	}
 
+	function edit(Book $book) {
+		return view("edit_book_form", ["book" => $book]);
+	}
+
 	function store(Request $request) {
 		$request->validate([
+			"id" => "nullable|exists:books",
 			"name" => "required",
 			"annotation" => "nullable",
 			"pagecount" => "nullable|numeric",
@@ -38,7 +43,7 @@ class BookController extends Controller {
 
 		$arr = $request;
 
-		$book = new Book;
+		$book = Book::find($arr->id) ?? new Book;
 		$book->name = $arr->name;
 		$book->annotation = $arr->annotation;
 		$book->pagecount = $arr->pagecount;

+ 3 - 0
resources/views/book.blade.php

@@ -11,4 +11,7 @@
 <div>Количество страниц: {{$book->pagecount ?? "N/A"}}</div>
 <div>Год: {{$book->year ?? "N/A"}}</div>
 </p>
+<p>
+<a href="/book/{{ $book->id }}/edit">Редактировать</a>
+</p>
 @endsection

+ 62 - 0
resources/views/edit_book_form.blade.php

@@ -0,0 +1,62 @@
+@extends("layouts.app")
+
+@section("content")
+<h1>Редактирование книги</h1>
+<form method="POST" action="">
+	@csrf
+
+	<input type="hidden" name="id" value="{{ $book->id }}">
+
+	<div>
+		<label>
+			<div>Название:</div>
+			<input type="text" name="name" placeholder="Название книги..." value="{{ old("name") ?? $book->name }}">
+			@error("name")
+				<span class="alert">{{ $message }}</span>
+			@enderror
+		</label>
+	</div>
+
+	<div>
+		<label>
+			<div>Аннотация:</div>
+			<textarea name="annotation" placeholder="Аннотация...">{{ old("annotation") ?? $book->annotation }}</textarea>
+			@error("annotation")
+				<span class="alert">{{ $message }}</span>
+			@enderror
+		</label>
+	</div>
+
+	<div>
+		<label>
+			<div>Количество страниц:</div>
+			<input type="number" name="pagecount" placeholder="Количество страниц..." value="{{ old("pagecount") ?? $book->pagecount }}">
+			@error("pagecount")
+				<span class="alert">{{ $message }}</span>
+			@enderror
+		</label>
+	</div>
+
+	<div>
+		<label>
+			<div>Год:</div>
+			<input type="year" name="year" placeholder="Год..." value="{{ old("year") ?? $book->year }}">
+			@error("year")
+				<span class="alert">{{ $message }}</span>
+			@enderror
+		</label>
+	</div>
+
+	<div>
+		<label>
+			<div>ISBN:</div>
+			<input type="text" name="isbn" placeholder="ISBN..." value="{{ old("ISBN") ?? $book->isbn }}">
+			@error("isbn")
+				<span class="alert">{{ $message }}</span>
+			@enderror
+		</label>
+	</div>
+
+	<input type="submit">
+</form>
+@endsection

+ 2 - 0
routes/web.php

@@ -22,6 +22,8 @@ use App\Http\Controllers;
 Route::get('/books', [Controllers\BookController::class, 'index']);
 Route::get('/book/add', [Controllers\BookController::class, 'add']);
 Route::get('/book/{book}', [Controllers\BookController::class, 'view']);
+Route::get('/book/{book}/edit', [Controllers\BookController::class, 'edit']);
+Route::post('/book/{book}/edit', [Controllers\BookController::class, 'store']);
 Route::post('/book/add', [Controllers\BookController::class, 'store']);
 
 // Авторы