Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:symfony:extensions:easyadmin:easyadmin [30/09/2022 14:54]
thierry [Sécurité]
prog:symfony:extensions:easyadmin:easyadmin [10/11/2022 12:06] (Version actuelle)
thierry [Sources & Ressources]
Ligne 4: Ligne 4:
  
 ===== Premier Dashboard ===== ===== Premier Dashboard =====
 +==== Création ====
 +
 ''​symfony console make:​admin:​dashboard''​ ''​symfony console make:​admin:​dashboard''​
  
-Créé ​le contrôleur dans ''/​src/​admin/''​+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''​ 
 +<code php src\Controller\Admin\DashboardController.php>​ 
 +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é 
 +    } 
 +</​code>​ 
 +=== Création du template === 
 +  * On créé le répértoire ''​templates\Admin''​ 
 +  * On y créé le fichier ''​index.html.twig''​ avec le code suivant... 
 + 
 +<code twig templates\Admin\index.html.twig>​ 
 +{# 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<​br/>​ 
 +    <a class="​btn btn-primary"​ href="#">​Some Action</​a>​ 
 +{% endblock %} 
 + 
 +{% block main %} 
 +Block Main  
 +{% endblock %} 
 +</​code>​ 
 +Ce qui nous donne ceci : 
 +{{:​prog:​symfony:​extensions:​easyadmin:​admin_acc.jpg?​600|}} 
 + 
  
 ===== Sécurité ===== ===== 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''​ Pour interdire l’accès a l'​administration a n'​importe qui on modifie le fichier ''​config\packages\security.yaml''​
  
Ligne 17: Ligne 69:
         # - { path: ^/profile, roles: ROLE_USER }         # - { path: ^/profile, roles: ROLE_USER }
 </​code>​ </​code>​
 +===== 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);''​
 +<code php src\Controller\Admin\DashboardController.php>​
 +    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
 +    }
 +</​code>​
 +=== 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''​
 +<code php>
 +        yield MenuItem::​linkToCrud('​Distributeurs',​ 'fas fa-list',​ GDistributeur::​class); ​
 +        yield MenuItem::​linkToCrud('​Gestion des Tickets',​ 'fa fa-question-circle',​ GDistributeur::​class)
 +          ->​setController(GTicketDistributeurCrudController::​class); ​   ​
 +</​code>​
 +
 +
 +
 +
 +
 +====== 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 !
 +