11
11
12
12
namespace App \Controller ;
13
13
14
- use App \Service \CookbookFactory ;
15
14
use App \Service \CookbookRepository ;
16
15
use Symfony \Bundle \FrameworkBundle \Controller \AbstractController ;
17
16
use Symfony \Component \HttpFoundation \Response ;
18
17
use Symfony \Component \Routing \Attribute \Route ;
18
+ use Symfony \Component \Routing \Requirement \Requirement ;
19
19
20
20
class CookbookController extends AbstractController
21
21
{
22
22
public function __construct (
23
- private CookbookRepository $ cookbookRepository ,
24
- private CookbookFactory $ cookbookFactory ,
23
+ private readonly CookbookRepository $ cookbookRepository ,
25
24
) {
26
25
}
27
26
28
- #[Route('/cookbook ' , name: 'app_cookbook_index ' )]
27
+ #[Route('/cookbook ' , name: 'app_cookbook ' )]
29
28
public function index (): Response
30
29
{
31
30
$ cookbooks = $ this ->cookbookRepository ->findAll ();
@@ -35,13 +34,15 @@ public function index(): Response
35
34
]);
36
35
}
37
36
38
- #[Route('/cookbook/{slug} ' , name: 'app_cookbook_show ' )]
37
+ #[Route('/cookbook/{slug} ' , name: 'app_cookbook_show ' , requirements: [ ' slug ' => Requirement:: ASCII_SLUG ] )]
39
38
public function show (string $ slug ): Response
40
39
{
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
+ }
42
44
43
45
return $ this ->render ('cookbook/show.html.twig ' , [
44
- 'slug ' => $ slug ,
45
46
'cookbook ' => $ cookbook ,
46
47
]);
47
48
}
0 commit comments