'\d+', ], methods: [ 'GET' ] )] public function online( ?Request $request, EntityManagerInterface $entityManagerInterface ): Response { $online = []; foreach ($entityManagerInterface->getRepository(Online::class)->findBy( [ 'crc32server' => $request->get('crc32server') ], [ 'id' => 'DESC' // same as online.time but faster ], 10 ) as $value) { $online[] = [ 'id' => $value->getId(), 'bots' => $value->getBots(), 'players' => $value->getPlayers(), 'total' => $value->getTotal(), 'time' => $value->getTime() ]; } // Response $response = new Response(); $response->headers->set( 'Content-Type', 'text/xml' ); return $this->render( 'default/rss/online.xml.twig', [ 'server' => [ 'crc32server' => $request->get('crc32server'), 'online' => $online ] ], $response ); throw $this->createNotFoundException(); } #[Route( '/rss/players/{crc32server}', name: 'rss_players', requirements: [ 'crc32server' => '\d+', ], methods: [ 'GET' ] )] public function players( ?Request $request, EntityManagerInterface $entityManagerInterface ): Response { $players = []; foreach ($entityManagerInterface->getRepository(Player::class)->findBy( [ 'crc32server' => $request->get('crc32server') ], [ 'id' => 'DESC' ], 10 ) as $value) { $result[] = [ 'id' => $value->getId(), 'name' => $value->getName(), 'joined' => $value->getJoined() ]; } // Response $response = new Response(); $response->headers->set( 'Content-Type', 'text/xml' ); return $this->render( 'default/rss/players.xml.twig', [ 'server' => [ 'crc32server' => $request->get('crc32server'), 'players' => $players ] ], $response ); } }