feat: livrer la page /team avec le roster en mémoire
@@ -10,7 +10,7 @@ final readonly class ViewTeamajouté : use App\Team\Infrastructure\Repository\InMemoryMemberRepository;use Symfony\Component\HttpFoundation\Exception\NotFoundHttpException;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpKernel\Attribute\AsController;use Symfony\Component\Routing\Attribute\Route;ajouté : use Twig\Environment;Pourrait-on aliaser cet import en Twig pour le rendre un peu plus compréhensible ?
Et si on étendait AbstractController pour utiliser la méthode render() ?
#[AsController]final readonly class ViewTeam{ public function __construct(ajouté : private Environment $twig,ajouté : private InMemoryMemberRepository $memberRepository,Ceci devrait plutôt dépendre d'une interface pour éviter le couplage aux détails d'implémentation
👍 Ce contrat Repository ((ouvre dans un nouvel onglet)) appartient à la couche Domain à mon avis.
Pour cibler une implémentation précise, tu peux utiliser l'attribut Autowire ((ouvre dans un nouvel onglet)).
) { } #[Route(name: 'app_team', path: '/team')] public function __invoke(Request $request): Response {retiré : return new Response();ajouté : if ('GET' !== $request->getMethod()) {ajouté : throw new NotFoundHttpException();Même si ça fonctionne, #[Route(methods: ['GET'])] est une meilleure façon d'y parvenir.
En effet, mieux vaut tirer parti des capacités du routeur Symfony pour te concentrer sur la logique métier.
ajouté : }ajouté : ajouté : return new Response($this->twig->render('pages/team/index.html.twig', [ajouté : 'members' => $this->memberRepository->findAll(),Devrait-elle plutôt renvoyer un résultat paginé ?
Pour autant que je sache, baksla.sh n'aura pas assez de membres pour avoir besoin de pagination de sitôt 😉
D'accord, et tant qu'on y est : oublie render() et utilise l'attribut #[Template] ((ouvre dans un nouvel onglet)). Il suffit de renvoyer le tableau, plus besoin d'Environment.
ajouté : ])); }}