AdminCardModelController
extends AbstractController
in package
Administre les modèles de carte (`CardModel`) proposés lors de la personnalisation.
Fournit un CRUD complet sur les gabarits graphiques : création, édition, consultation,
activation/désactivation et suppression. Chaque modèle porte deux visuels (recto et verso)
stockés dans public/uploads/card_models ; le contrôleur gère leur upload, le remplacement
de l'ancien fichier et leur effacement physique lors de la suppression du modèle.
Préfixe de route : /admin/card-models. Réservé à ROLE_ADMIN pour toutes les actions.
Attributes
- #[IsGranted]
- 'ROLE_ADMIN'
- #[Route]
- '/admin/card-models'
Table of Contents
Properties
- $cardModelRepository : CardModelRepository
- $entityManager : EntityManagerInterface
Methods
- __construct() : mixed
- delete() : Response
- Supprime définitivement un modèle de carte et ses visuels.
- edit() : Response
- Modifie un modèle de carte existant.
- index() : Response
- Affiche la liste paginée des modèles de carte.
- new() : Response
- Crée un nouveau modèle de carte.
- show() : Response
- Affiche le détail d'un modèle de carte.
- toggleStatus() : Response
- Bascule l'état actif/inactif d'un modèle de carte.
- deleteFile() : void
- Efface physiquement un fichier de `public/uploads/<répertoire>`.
- deleteModelImages() : void
- Efface du disque les deux visuels associés à un modèle de carte.
- handleFileUploads() : void
- Traite l'upload des visuels recto et verso soumis dans le formulaire.
- uploadFile() : string|null
- Déplace un fichier uploadé vers `public/uploads/<répertoire>` sous un nom unique.
Properties
$cardModelRepository read-only
private
CardModelRepository
$cardModelRepository
$entityManager read-only
private
EntityManagerInterface
$entityManager
Methods
__construct()
public
__construct(EntityManagerInterface $entityManager, CardModelRepository $cardModelRepository) : mixed
Parameters
- $entityManager : EntityManagerInterface
-
Gestionnaire Doctrine utilisé pour persister, supprimer et
flush()les modèles. - $cardModelRepository : CardModelRepository
-
Dépôt des modèles de carte, utilisé pour construire la requête de listing.
delete()
Supprime définitivement un modèle de carte et ses visuels.
public
delete(CardModel $cardModel, Request $request) : Response
La suppression n'est effectuée que si le jeton CSRF delete<id> transmis dans _token
est valide ; sinon un flash d'erreur « Token CSRF invalide. » est posé et rien n'est
modifié. En cas de jeton valide, les fichiers recto/verso sont d'abord effacés du disque
par AdminCardModelController::deleteModelImages(), puis l'entité est retirée.
Route : /admin/card-models/{id}/delete (POST), nom admin_card_models_delete.
Parameters
- $cardModel : CardModel
-
Modèle à supprimer, résolu depuis
{id}. - $request : Request
-
Requête HTTP portant le jeton CSRF
_token.
Attributes
- #[Route]
- '/{id}/delete'
- $name: 'admin_card_models_delete'
- $methods: ['POST']
Return values
Response —Redirection vers admin_card_models_index dans les deux cas.
edit()
Modifie un modèle de carte existant.
public
edit(CardModel $cardModel, Request $request) : Response
Traite le formulaire CardModelType lié au modèle. À la soumission valide, applique
AdminCardModelController::handleFileUploads() (qui remplace et efface les anciens
visuels si de nouveaux fichiers sont fournis), horodate updatedAt à maintenant, puis
flush().
Route : /admin/card-models/{id}/edit (toutes méthodes), nom admin_card_models_edit.
Parameters
- $cardModel : CardModel
-
Modèle à modifier, résolu depuis
{id}. - $request : Request
-
Requête HTTP traitée par le formulaire.
Attributes
- #[Route]
- '/{id}/edit'
- $name: 'admin_card_models_edit'
Return values
Response —Formulaire HTML admin/card_model/edit.html.twig, ou redirection vers admin_card_models_index après enregistrement.
index()
Affiche la liste paginée des modèles de carte.
public
index(Request $request, PaginatorInterface $paginator) : Response
Les modèles sont triés par date de création décroissante et paginés par blocs de 10
(paramètre de query page). Actifs et inactifs sont affichés indifféremment.
Route : /admin/card-models (toutes méthodes), nom admin_card_models_index.
Parameters
- $request : Request
-
Requête HTTP fournissant le numéro de page.
- $paginator : PaginatorInterface
-
Paginateur KnpPaginator.
Attributes
- #[Route]
- ''
- $name: 'admin_card_models_index'
Return values
Response —Page HTML admin/card_model/index.html.twig.
new()
Crée un nouveau modèle de carte.
public
new(Request $request) : Response
Instancie un CardModel vierge et traite le formulaire CardModelType. À la soumission
valide, les visuels recto/verso sont traités par
AdminCardModelController::handleFileUploads() avant persistance de l'entité.
Route : /admin/card-models/new (toutes méthodes), nom admin_card_models_new.
Parameters
- $request : Request
-
Requête HTTP traitée par le formulaire.
Attributes
- #[Route]
- '/new'
- $name: 'admin_card_models_new'
Return values
Response —Formulaire HTML admin/card_model/new.html.twig, ou redirection vers admin_card_models_index après création.
show()
Affiche le détail d'un modèle de carte.
public
show(CardModel $cardModel) : Response
Se contente de rendre le template de consultation avec l'entité résolue, sans traitement ni requête supplémentaire.
Route : /admin/card-models/{id}/show (toutes méthodes), nom admin_card_models_show.
Parameters
- $cardModel : CardModel
-
Modèle consulté, résolu depuis
{id}.
Attributes
- #[Route]
- '/{id}/show'
- $name: 'admin_card_models_show'
Return values
Response —Page HTML admin/card_model/show.html.twig.
toggleStatus()
Bascule l'état actif/inactif d'un modèle de carte.
public
toggleStatus(CardModel $cardModel) : Response
Inverse le drapeau active, met updatedAt à la date courante, flush() puis pose un
flash de succès dont le libellé reflète le nouvel état (« activé » ou « désactivé »).
Un modèle inactif n'est plus retourné par CardModelRepository::findActiveModels() et
disparaît donc des choix proposés à la commande.
Route : /admin/card-models/{id}/toggle-status (toutes méthodes), nom admin_card_models_toggle_status.
Parameters
- $cardModel : CardModel
-
Modèle dont l'état est basculé, résolu depuis
{id}.
Attributes
- #[Route]
- '/{id}/toggle-status'
- $name: 'admin_card_models_toggle_status'
Return values
Response —Redirection vers admin_card_models_index.
deleteFile()
Efface physiquement un fichier de `public/uploads/<répertoire>`.
private
deleteFile(string $filename, string $directory) : void
L'appel à unlink() n'est réalisé que si le fichier existe ; sinon la méthode est sans
effet et ne signale rien.
Parameters
- $filename : string
-
Nom du fichier à effacer.
- $directory : string
-
Nom du sous-répertoire sous
public/uploads/.
deleteModelImages()
Efface du disque les deux visuels associés à un modèle de carte.
private
deleteModelImages(CardModel $cardModel) : void
Appelle AdminCardModelController::deleteFile() sur frontImage puis backImage,
uniquement lorsque ces références sont renseignées. Utilisée avant la suppression de
l'entité pour éviter les fichiers orphelins.
Parameters
- $cardModel : CardModel
-
Modèle dont les visuels doivent être effacés.
handleFileUploads()
Traite l'upload des visuels recto et verso soumis dans le formulaire.
private
handleFileUploads(mixed $form, CardModel $cardModel) : void
Pour chacun des champs frontImageFile et backImageFile : si un fichier a été envoyé,
il est déplacé via AdminCardModelController::uploadFile() dans le sous-répertoire
card_models. Ce n'est qu'en cas de succès (nom de fichier retourné non nul) que
l'éventuel ancien visuel est effacé du disque et que la nouvelle référence est affectée
à l'entité ; un échec d'upload laisse donc l'ancien visuel intact.
Parameters
- $form : mixed
-
Formulaire soumis (
FormInterface), non typé dans la signature, dont on lit les champsfrontImageFileetbackImageFile. - $cardModel : CardModel
-
Modèle dont les visuels sont mis à jour.
uploadFile()
Déplace un fichier uploadé vers `public/uploads/<répertoire>` sous un nom unique.
private
uploadFile(mixed $file, string $directory) : string|null
Le nom cible est un uniqid() suivi de l'extension devinée. Le répertoire de destination
est créé récursivement avec les droits 0755 s'il n'existe pas. En cas de FileException
pendant le déplacement, un flash d'erreur détaillant l'exception est posé et null est
retourné, ce qui signale l'échec à l'appelant.
Parameters
- $file : mixed
-
Fichier uploadé (
UploadedFile), non typé dans la signature. - $directory : string
-
Nom du sous-répertoire cible sous
public/uploads/(par exemplecard_models).
Return values
string|null —Nom de fichier généré en cas de succès, null si le déplacement a échoué.