Updates in Symfony

Update

Bij een update passen we data aan in een entity, dit doen we altijd via een formulier (zie hoofdstuk van formulieren). In onderstaande code gaan we a.d.h.v. een formulier een boek aanpassen. Belangrijk! Onderstaande code gaat er vanuit dat het systeem uiteraard een Book entity heeft en een formulier die BookType heet. Deze staan uiteraard in de use-space van de Controller.

Bekijk de code goed:

#[Route('/books/edit/{book}', name: 'app_book_update')]
public function edit(EntityManagerInterface $entityManager, Request $request, Book $book): Response
{
    //De regel Book $book in de edit functie hierboven zorgt ervoor dat het juiste boek welke meegestuurd wordt
    //in de variabele gezet wordt van $book

    //Onderstaande code haalt het formulier op (BookType) en vult deze data met die van de entity App\Entity\Book.
    $bookForm = $this->createForm(BookType::class, $book);

    //We handelen de request af (deze kijkt of het formulier verstuurd is)
    $bookForm->handleRequest($request);
    if ($bookForm->isSubmitted() && $bookForm->isValid()) {
        //We bereiden de database statement voor om het boek aan te passen
        $entityManager->persist($book);

        //We zorgen dat de update statemenet in de database gedraaid wordt.
        $entityManager->flush();

        //Uiteraard zetten we een flash-message
        $this->addFlash('success', 'Boek is aangepast');

        //We maken een redirect naar de route om het aangepaste boek te tonen
        return $this->redirectToRoute('app_book_show', ['book' => $book->getId()]);
    }

    //Als het formulier niet verstuurd is of ongeldig is tonen we de update pagina
    return $this->render('book/update.html.twig', compact('book', 'bookForm'));
}