1111
1212namespace App \Controller ;
1313
14- use App \Service \CookbookFactory ;
1514use App \Service \CookbookRepository ;
1615use Symfony \Bundle \FrameworkBundle \Controller \AbstractController ;
1716use Symfony \Component \HttpFoundation \Response ;
1817use Symfony \Component \Routing \Attribute \Route ;
18+ use Symfony \Component \Routing \Requirement \Requirement ;
1919
2020class CookbookController extends AbstractController
2121{
2222 public function __construct (
23- private CookbookRepository $ cookbookRepository ,
24- private CookbookFactory $ cookbookFactory ,
23+ private readonly CookbookRepository $ cookbookRepository ,
2524 ) {
2625 }
2726
28- #[Route('/cookbook ' , name: 'app_cookbook_index ' )]
27+ #[Route('/cookbook ' , name: 'app_cookbook ' )]
2928 public function index (): Response
3029 {
3130 $ cookbooks = $ this ->cookbookRepository ->findAll ();
@@ -35,13 +34,15 @@ public function index(): Response
3534 ]);
3635 }
3736
38- #[Route('/cookbook/{slug} ' , name: 'app_cookbook_show ' )]
37+ #[Route('/cookbook/{slug} ' , name: 'app_cookbook_show ' , requirements: [ ' slug ' => Requirement:: ASCII_SLUG ] )]
3938 public function show (string $ slug ): Response
4039 {
41- $ cookbook = $ this ->cookbookRepository ->findOneByName ($ slug );
40+ $ cookbook = $ this ->cookbookRepository ->findOneBySlug ($ slug );
41+ if (!$ cookbook ) {
42+ throw $ this ->createNotFoundException (\sprintf ('Cookbook "%s" not found ' , $ slug ));
43+ }
4244
4345 return $ this ->render ('cookbook/show.html.twig ' , [
44- 'slug ' => $ slug ,
4546 'cookbook ' => $ cookbook ,
4647 ]);
4748 }
0 commit comments