123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- // php artisan make:controller BookController
- // app/Http/Controllers/BookController.php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- // Фасад DB здесь не используется; здесь используется модель
- use App\Models\Book;
- use App\Models\Author;
- class BookController extends Controller {
- function index() {
- $books = Book::all()->load("author"); // Достать все книги
- return view("books", ["rows" => $books]);
- }
- function add() {
- return view("add_book_form", ["authors" => Author::all()]);
- }
- function view(Book $book) {
- return view("book", ["book" => $book->load(["author", "comments"])]);
- }
- 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",
- "year" => "nullable|numeric",
- "isbn" => "nullable",
- "author" => "required|exists:authors,id"
- ], [
- "name" => "Книга должна иметь название.",
- "author" => "Книга должна иметь автора."
- ]);
- $arr = $request;
- $book = Book::find($arr->id) ?? new Book;
- $book->name = $arr->name;
- $book->annotation = $arr->annotation;
- $book->pagecount = $arr->pagecount;
- $book->year = $arr->year;
- $book->isbn = $arr->isbn;
- $book->author_id = $arr->author;
- $book->save();
- return view("success");
- }
- function comment(Book $book, Request $request) {
- $request->validate([
- "name" => "required",
- "email" => "required|email",
- "content" => "required"
- ], [
- "name" => "Укажите ваше имя.",
- "email" => "Укажите ваш email.",
- "content" => "Введите комментарий."
- ]);
- $arr = $request;
- $book->comments()->create([
- "name" => $arr->name,
- "email" => $arr->email,
- "content" => $arr->content
- ]);
- return view("success");
- }
- function drop(Book $book) {
- $book->delete();
- return view("success");
- }
- }
|