AuthorController.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\Author;
  5. class AuthorController extends Controller {
  6. function index() {
  7. $authors = Author::all();
  8. return view("authors", ["rows" => $authors]);
  9. }
  10. function add() {
  11. return view("add_author_form");
  12. }
  13. function view(Author $author) {
  14. return view("author", ["author" => $author->load(["books", "comments"])]);
  15. }
  16. function edit(Author $author) {
  17. return view("edit_author_form", ["author" => $author]);
  18. }
  19. function store(Request $request) {
  20. $request->validate([
  21. "id" => "nullable|exists:authors",
  22. "name" => "required",
  23. "description" => "nullable"
  24. ], [
  25. "name" => "Автор должен иметь имя."
  26. ]);
  27. $arr = $request;
  28. $author = Author::find($arr->id) ?? new Author;
  29. $author->name = $arr->name;
  30. $author->description = $arr->description;
  31. $author->save();
  32. return view("success");
  33. }
  34. function comment(Author $author, Request $request) {
  35. $request->validate([
  36. "name" => "required",
  37. "email" => "required|email",
  38. "content" => "required"
  39. ], [
  40. "name" => "Укажите ваше имя.",
  41. "email" => "Укажите ваш email.",
  42. "content" => "Введите комментарий."
  43. ]);
  44. $arr = $request;
  45. $author->comments()->create([
  46. "name" => $arr->name,
  47. "email" => $arr->email,
  48. "content" => $arr->content
  49. ]);
  50. return view("success");
  51. }
  52. function drop(Author $author) {
  53. $author->delete();
  54. return view("success");
  55. }
  56. }