====== 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 !