render('borrow/list.html.twig', [ 'pagination' => $paginator->paginate( $borrows->createListQueryBuilder(), max(1, $request->query->getInt('page', 1)), ), ]); } #[Route('/book/{id}/lend', name: 'book_lend', requirements: ['id' => Requirement::DIGITS], methods: ['POST'])] public function lend(Request $request, Book $book, Library $library): Response { $form = $this->createForm(BorrowType::class); $form->handleRequest($request); if (!$book->isBorrowed() && $form->isSubmitted() && $form->isValid()) { $library->lend($book, $form->getData()['who']); $this->addFlash('success', 'borrow_lent'); } else { $this->addFlash('error', 'action_rejected'); } return $this->redirectToRoute('book_show', ['id' => $book->getId()]); } #[Route('/book/{id}/return', name: 'book_return', requirements: ['id' => Requirement::DIGITS], methods: ['POST'])] public function return(Request $request, Book $book, Library $library): Response { if ($book->isBorrowed() && $this->isCsrfTokenValid('return' . $book->getId(), $request->getPayload()->getString('_token'))) { $library->giveBack($book); $this->addFlash('success', 'borrow_returned'); } else { $this->addFlash('error', 'action_rejected'); } return $this->redirectToRoute('book_show', ['id' => $book->getId()]); } }