symfony composer req admin
symfony console make:admin:dashboard
Cette commande créé le contrôleur dans /src/admin/
Next steps:
src/Controller/Admin/DashboardController.php
make:admin:crud
to generate CRUD controllers and link them from the Dashboard.
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é }
templates\Admin
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<br/> <a class="btn btn-primary" href="#">Some Action</a> {% endblock %} {% block main %} Block Main {% endblock %}
Le système authentification doit être installé → Authentification
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 }
symfony console make:admin:crud
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 }
Le paramètre 'fas fa-list
' est une référence aux icônes de Font Awesome : List
Dans l'exemple ci dessous on gère la même Entity : GDistributeur
, mais on pointe sur deux
contrôleurs différents
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);