src/Controller/ApiThemeController.php line 96
<?phpnamespace App\Controller;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use App\Repository\ThemeRepository;use App\Repository\ThemeCategorieRepository;use App\Repository\ThemeSousCategorieRepository;use Knp\Component\Pager\PaginatorInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\HttpFoundation\File\File;#[Route('/api', name: 'api_')]class ApiThemeController extends AbstractController{#[Route('/theme/{name}', name: '_theme')]public function index(Request $request, RequestStack $requestStack, ThemeRepository $themeRepository, PaginatorInterface $paginator, string $name): Response{$baseUrl = $requestStack->getCurrentRequest()->getSchemeAndHttpHost();$themeRepo = $themeRepository->findDataByName($name);$page = $request->query->getInt('page', 1);$pageSize = 1000;$themes = $paginator->paginate($themeRepo, $page, $pageSize);$data = [];foreach ($themes as $theme) {if ($theme[$name] === null) {$rst = "";} else {$rst = $baseUrl . '/' . $theme[$name];}$data[] = ['text_data' => $theme['text_data'],'image_data' => $baseUrl . '/' . $theme['image_data'],$name => $rst,'ref' => $theme['ref'],];}$totalItems = $themes->getTotalItemCount();$totalPages = ceil($totalItems / $pageSize);return $this->json(['message' => 'get theme','data' => $data,'total_pages' => $totalPages,], 200);}#[Route('/theme/{name}/{ref}', name: '_theme_ref')]public function getThemeRefImage(Request $request, ThemeRepository $themeRepository, string $name, string $ref): Response{$getImageData = $themeRepository->getImageData($ref);$imagePath = $getImageData['0']['image_data'];// Emplacement de l'image dans le dossier public/theme/$ref/image.png$publicPath = $this->getParameter('kernel.project_dir') . '/public';$imageFile = new File("{$publicPath}/theme/{$ref}/image.png");// Vérifier si le fichier existeif ($imageFile->isFile()) {// Lire le contenu du fichier$fileContent = file_get_contents($imageFile->getPathname());// Convertir en base64$base64Image = base64_encode($fileContent);return $this->json(['message' => 'get theme image data','data' => 'data:image/png;base64,' . $base64Image,], 200);}return $this->json(['message' => 'Image not found',], 404);}#[Route('/thematique/{name}/{categorie}/{sub}', name: '_get_theme_categorie')]public function getThemeCategorie(Request $request, RequestStack $requestStack, ThemeRepository $themeRepository, PaginatorInterface $paginator, string $name, string $categorie, ThemeCategorieRepository $ThemeCategorieRepository, ThemeSousCategorieRepository $SousCategorieRepository, string $sub = null): Response{$baseUrl = $requestStack->getCurrentRequest()->getSchemeAndHttpHost();$themeCategorie = $ThemeCategorieRepository->findOneBy(['nom' => $categorie]);if (!$themeCategorie) {return $this->json(['message' => 'categorie non trouvé',], 404);}// Si sous-catégorie n'est pas nulle, alors on l'utilise// Si sous-catégorie n'est pas nulle, alors on l'utiliseif ($sub !== null) {$themeSousCategorie = $SousCategorieRepository->findOneBy(['nom' => $sub]);if (!$themeSousCategorie) {return $this->json(['message' => 'sous-categorie non trouvé',], 404);}$themeRepo = $themeRepository->findDataByNameAndCategorieOrSubcategorie($name, $themeCategorie->getId(), $themeSousCategorie->getId());} else {$themeRepo = $themeRepository->findDataByNameAndCategorieOrSubcategorie($name, $themeCategorie->getId());}$page = $request->query->getInt('page', 1);$pageSize = 1000;$themes = $paginator->paginate($themeRepo, $page, $pageSize);$data = [];foreach ($themes as $theme) {if ($theme[$name] === null) {$rst = "";} else {$rst = $baseUrl . '/' . $theme[$name];}$data[] = [//'text_data' => $theme['text_data'],//'image_data' => $baseUrl . '/' . $theme['image_data'],$name => $rst,'ref' => $theme['ref'],];}$totalItems = $themes->getTotalItemCount();$totalPages = ceil($totalItems / $pageSize);return $this->json(['message' => 'get theme cat & sub','data' => $data,'total_pages' => $totalPages,], 200);}#[Route('/recup/{ref}', name: '_get_theme_recup')]public function getThemeRecup(Request $request, RequestStack $requestStack, ThemeRepository $themeRepository, PaginatorInterface $paginator, string $ref): Response{$baseUrl = $requestStack->getCurrentRequest()->getSchemeAndHttpHost();$themeRepo = $themeRepository->findOneByRef($ref);return $this->json(['message' => 'recup image text','data' => $themeRepo,], 200);/*$page = $request->query->getInt('page', 1);$pageSize = 1000;$themes = $paginator->paginate($themeRepo, $page, $pageSize);$data[] = ['text_data' => $themeRepo['text_data'],'image_data' => $baseUrl . '/' . $themeRepo['image_data'],//$name => $rst,//'ref' => $theme['ref'],];return $this->json(['message' => 'recup image text','data' => $data,], 200);*/}}