diff --git a/src/Controller/EnemyController.php b/src/Controller/EnemyController.php index 435f840..c63b0ba 100644 --- a/src/Controller/EnemyController.php +++ b/src/Controller/EnemyController.php @@ -100,6 +100,20 @@ class EnemyController extends AbstractController return $this->handleForm($request, $em, $enemy); } + #[Route('/enemies/{id}/delete', name: 'app_enemies_delete', requirements: ['id' => '\d+'], methods: ['POST'])] + public function delete(Request $request, Enemy $enemy, EntityManagerInterface $em): Response + { + if ($this->isCsrfTokenValid('delete-enemy-'.$enemy->getId(), (string) $request->request->get('_token'))) { + $name = $enemy->getName(); + // Combatants keep their snapshotted stats; enemy_id is set null by the FK. + $em->remove($enemy); + $em->flush(); + $this->addFlash('success', sprintf('Deleted "%s".', $name)); + } + + return $this->redirectToRoute('app_enemies'); + } + private function handleForm(Request $request, EntityManagerInterface $em, Enemy $enemy): Response { $isNew = null === $enemy->getId(); diff --git a/templates/enemy/show.html.twig b/templates/enemy/show.html.twig index b294cf7..92b69e6 100644 --- a/templates/enemy/show.html.twig +++ b/templates/enemy/show.html.twig @@ -11,7 +11,14 @@

{{ enemy.name }}

{{ enemy.metaLine }} - Edit stats +
+ Edit stats +
+ + +
+