====== Easyadmin ====== ===== Installation ===== ''symfony composer req admin'' ===== Premier Dashboard ===== ==== Création ==== ''symfony console make:admin:dashboard'' Cette commande créé le contrôleur dans ''/src/admin/'' Next steps: * Configure your Dashboard at ''src/Controller/Admin/DashboardController.php'' * Run ''make:admin:crud'' to generate CRUD controllers and link them from the Dashboard. ==== Création page d'accueil ==== === Modification du contrôleur === On modifie la function ''index'' du controller pour qu'elle affiche le template ''Admin/index.html.twig'' class DashboardController extends AbstractDashboardController { /** * Page d'accueil de l'admin * @Route("/admin", name="admin") */ public function index(): Response { // return parent::index(); <- Code original return $this->render('Admin/index.html.twig'); //<- Code modifié } === Création du template === * On créé le répértoire ''templates\Admin'' * On y créé le fichier ''index.html.twig'' avec le code suivant... {# templates/admin/my-custom-page.html.twig #} {% extends '@EasyAdmin/page/content.html.twig' %} {% block content_title %}The Title of the Page{% endblock %} {% block page_actions %} Block Page_actions
Some Action {% endblock %} {% block main %} Block Main {% endblock %}
Ce qui nous donne ceci : {{:prog:symfony:extensions:easyadmin:admin_acc.jpg?600|}} ===== Sécurité ===== ==== Prérequis ==== Le système authentification doit être installé -> [[prog:symfony:securite:authentification]] ==== Configuration ==== Pour interdire l’accès a l'administration a n'importe qui on modifie le fichier ''config\packages\security.yaml'' On décommente la ligne '' - { path: ^/admin, roles: ROLE_ADMIN }'' access_control: - { path: ^/admin, roles: ROLE_ADMIN } #<- a décommenter # - { path: ^/profile, roles: ROLE_USER } ===== CRUD ===== ==== Création ==== ''symfony console make:admin:crud'' ==== Ajout du menu dans le controleur ==== Dans le controleurs ''DashboardController.php'' on ajoute une linge : ''yield MenuItem::linkToCrud('%LabelDuMenu%', 'fas fa-list', %Entity%::class);'' public function configureMenuItems(): iterable { yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home'); // yield MenuItem::linkToCrud('The Label', 'fas fa-list', EntityClass::class); yield MenuItem::linkToCrud('Tickets', 'fas fa-list', GTicket::class); //<- Ligne ajoutée } === Les icones === Le paramètre '''fas fa-list''' est une référence aux icônes de [[https://fontawesome.com|Font Awesome]] : [[https://fontawesome.com/icons/list?s=solid&f=classic|List]] ==== Plusieurs CrudControllers pour la mème Entity ==== Dans l'exemple ci dessous on gère la même Entity : ''GDistributeur'', mais on pointe sur deux contrôleurs différents * Le premier sur le controleur par défaut * Le deuxieme on force a utiliser le controlleur ayant la class ''GTicketDistributeurCrudController::class'' yield MenuItem::linkToCrud('Distributeurs', 'fas fa-list', GDistributeur::class); yield MenuItem::linkToCrud('Gestion des Tickets', 'fa fa-question-circle', GDistributeur::class) ->setController(GTicketDistributeurCrudController::class); ====== Sources & Ressources ====== * [[https://symfony.com/bundles/EasyAdminBundle/current/dashboards.html]] * [[https://www.youtube.com/watch?v=g6cYQ3IXGHY|Vidéo Youtube : Créons un BackOffice facilement avec EasyAdmin 3 ! de Yoandev]] * [[https://afsy.fr/avent/2017/01-easyadminbundle-l-arriere-guichet-easy-peasy]] * [[https://symfony.com/bundles/EasyAdminBundle/3.x/index.html]] * [[https://fr.slideshare.net/rkueny/prsentation-de-easyadmin-le-bundle-dadmin-de-symfony]] <- intéressant !