AuthorController.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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", [
  15. "author" => $author->load([
  16. "books" => function($query) {},
  17. "comments" => function($query) { $query->recent(); }
  18. ])
  19. ]);
  20. }
  21. function edit(Author $author) {
  22. return view("edit_author_form", ["author" => $author]);
  23. }
  24. function store(Request $request) {
  25. $request->validate([
  26. "id" => "nullable|exists:authors",
  27. "name" => "required",
  28. "description" => "nullable"
  29. ], [
  30. "name" => "Автор должен иметь имя."
  31. ]);
  32. $arr = $request;
  33. $author = Author::find($arr->id) ?? new Author;
  34. $author->name = $arr->name;
  35. $author->description = $arr->description;
  36. $author->save();
  37. return view("success");
  38. }
  39. function comment(Author $author, Request $request) {
  40. $request->validate([
  41. "name" => "required",
  42. "email" => "required|email",
  43. "content" => "required"
  44. ], [
  45. "name" => "Укажите ваше имя.",
  46. "email" => "Укажите ваш email.",
  47. "content" => "Введите комментарий."
  48. ]);
  49. $arr = $request;
  50. $author->comments()->create([
  51. "name" => $arr->name,
  52. "email" => $arr->email,
  53. "content" => $arr->content
  54. ]);
  55. return view("success");
  56. }
  57. function drop(Author $author) {
  58. $author->delete();
  59. return view("success");
  60. }
  61. }