BookController.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. // php artisan make:controller BookController
  3. // app/Http/Controllers/BookController.php
  4. namespace App\Http\Controllers;
  5. use Illuminate\Http\Request;
  6. // Фасад DB здесь не используется; здесь используется модель
  7. use App\Models\Book;
  8. use App\Models\Author;
  9. class BookController extends Controller {
  10. function index() {
  11. $books = Book::all(); // Достать все книги
  12. return view("books", ["rows" => $books]);
  13. }
  14. function add() {
  15. return view("add_book_form", ["authors" => Author::all()]);
  16. }
  17. function view(Book $book) {
  18. return view("book", ["book" => $book]);
  19. }
  20. function edit(Book $book) {
  21. return view("edit_book_form", ["book" => $book]);
  22. }
  23. function store(Request $request) {
  24. $request->validate([
  25. "id" => "nullable|exists:books",
  26. "name" => "required",
  27. "annotation" => "nullable",
  28. "pagecount" => "nullable|numeric",
  29. "year" => "nullable|numeric",
  30. "isbn" => "nullable",
  31. "author" => "required|exists:authors,id"
  32. ], [
  33. "name" => "Книга должна иметь название.",
  34. "author" => "Книга должна иметь автора."
  35. ]);
  36. $arr = $request;
  37. $book = Book::find($arr->id) ?? new Book;
  38. $book->name = $arr->name;
  39. $book->annotation = $arr->annotation;
  40. $book->pagecount = $arr->pagecount;
  41. $book->year = $arr->year;
  42. $book->isbn = $arr->isbn;
  43. $book->author_id = $arr->author;
  44. $book->save();
  45. return view("success");
  46. }
  47. function drop(Book $book) {
  48. $book->delete();
  49. return view("success");
  50. }
  51. }