Skip to content

Latest commit

 

History

History
98 lines (73 loc) · 4.13 KB

README.md

File metadata and controls

98 lines (73 loc) · 4.13 KB

SonataDTOAdminBundle

Alternative au bundle SonataDoctrineOrmAdminBundle pour la gestion des admins sonata. Ce bundle permet d'utiliser des DTOs dans les admins.

Il peut être utilisé par exemple pour afficher des données récupérées d'une api (ou de n'importe quelle source autre que Doctrine). dans un admin Sonata

Installation

Le bundle peut être installer avec Composer.

  • Il faut ajouter le repo vtech dans la configuration de composer:
"repositories": {
    "vtech": {
        "type": "composer",
        "url": "https://composer.vtech.fr"
    }
}
  • Puis taper la commande suivante:
composer require vtech-bundles/sonata-dto-admin-bundle

Utilisation

Configuration de l'admin

Pour utiliser ce bundle un admin doit être déclaré dans Sonata comme étant de type dto. Ci-dessous un exemple de configuration en yaml:

tags:
  - { name: sonata.admin, manager_type: dto, label: 'my_admin_label' }

De plus pour fonctionner un classe implémentant l'interface Vtech\Bundle\SonataDTOAdminBundle\Repository\AdminRepositoryInterface doit être créée pour indiquer comment récupérer, sauvegarder et modifier le DTO. Cette classe "repository" doit être taguée dans l'injection de dépendance de la façon suivante:

tags:
  - { name: 'sonata.admin.dto_repository', class: 'My\Dto\Class' }

Pour tirer profit de l'auto configuration sur les dernières versions de Symfony, une interface de "subscriber" existe également (Vtech\Bundle\SonataDTOAdminBundle\Repository\AdminRepositoryInterface) pour supprimer l'argument class du tag. Il vous suffira d'ajouter ceci dans votre fichier services.yaml (pour Symfony ^3.3):

_instanceof:
  Vtech\Bundle\SonataDTOAdminBundle\Repository\AdminRepositoryInterface:
    tags: [sonata.admin.dto_repository]

Il existe 4 autres interfaces facultatives dans ce bundle :

Interface Description
Vtech\Bundle\SonataDTOAdminBundle\Admin\IdentifierDescriptorInterface Défini les champs qui composent l'identifiant unique du DTO
Vtech\Bundle\SonataDTOAdminBundle\Admin\IdentifierDenormalizerInterface Défini comment dénormaliser l'identifiant unique du DTO depuis un string
Vtech\Bundle\SonataDTOAdminBundle\Admin\IdentifierNormalizerInterface Défini comment normaliser l'identifiant unique du DTO en string

Les classes implémentant ces interfaces doivent être déclarées dans l'injection de dépendance de la même manière que le "repository" :

tags:
  # Pour Vtech\Bundle\SonataDTOAdminBundle\Admin\IdentifierNormalizerInterface
  - { name: 'sonata.admin.dto_identifier_normalizer', class: 'My\Dto\Class' }
  # Pour Vtech\Bundle\SonataDTOAdminBundle\Admin\IdentifierDenormalizerInterface
  - { name: 'sonata.admin.dto_identifier_denormalizer', class: 'My\Dto\Class' }
  # Pour Vtech\Bundle\SonataDTOAdminBundle\Admin\IdentifierDescriptorInterface
  - { name: 'sonata.admin.dto_identifier_descriptor', class: 'My\Dto\Class' }

Liste des filtres disponibles

Lorsqu'un admin est de type dto il ne peut pas utiliser les filtres par défaut de Sonata dans la méthode configureDatagridFilters. Il doit obligatoirement utiliser l'un des filtres suivants (ou en créer un nouveau) :

Interface Alias
Vtech\Bundle\SonataDTOAdminBundle\Filter\BooleanFilter dto_boolean
Vtech\Bundle\SonataDTOAdminBundle\Filter\CallbackFilter dto_callback
Vtech\Bundle\SonataDTOAdminBundle\Filter\DateFilter dto_date
Vtech\Bundle\SonataDTOAdminBundle\Filter\DoctrineEntityFilter dto_doctrine_entity
Vtech\Bundle\SonataDTOAdminBundle\Filter\DefaultFilter dto_default
Vtech\Bundle\SonataDTOAdminBundle\Filter\StringFilter dto_string

Publication

Pour publier une nouvelle version de ce bundle il suffit de créer un nouveau tag dans GitLab puis de mettre à jour le repo satis interne à cette adresse.