src/Controller/Admin/DashboardController.php line 45
<?phpnamespace App\Controller\Admin;use App\Entity\Ecole;use App\Entity\Email;use App\Entity\FormatEcole;use App\Entity\FrequenceEcole;use App\Entity\Inscription;use App\Entity\InscriptionContextScientifique;use App\Entity\InscriptionLogementLieu;use App\Entity\InscriptionModeTransfert;use App\Entity\InscriptionModeTransport;use App\Entity\InscriptionNbParticipation;use App\Entity\InscriptionQualite;use App\Entity\InscriptionRepas;use App\Entity\InscriptionSituation;use App\Entity\InscriptionVilleArrive;use App\Entity\Institut;use App\Entity\SubventionOrganisme;use App\Entity\TailleEcole;use App\Entity\Thematique;use App\Entity\User;use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\Security\Core\User\UserInterface;use function Symfony\Component\Translation\t;class DashboardController extends AbstractDashboardController{public function __construct(private AdminUrlGenerator $adminUrlGenerator){}#[Route('/', name: 'admin_redirect')]public function adminRedirect(): Response{return $this->redirect("/admin/fr");}#[Route('/admin/{_locale}', defaults: ['_locale' => 'fr'], name: 'admin_dashboard')]public function index(): Response{//return $this->render('admin/my-dashboard.html.twig', []);// Option 1. You can make your dashboard redirect to some common page of your backend//// $adminUrlGenerator = $this->container->get(AdminUrlGenerator::class);return $this->redirect($this->adminUrlGenerator->setController(EcoleCrudController::class)->generateUrl());// Option 2. You can make your dashboard redirect to different pages depending on the user//// if ('jane' === $this->getUser()->getUsername()) {// return $this->redirect('...');// }// Option 3. You can render some custom template to display a proper dashboard with widgets, etc.// (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig)//// return $this->render('some/path/my-dashboard.html.twig');}public function configureDashboard(): Dashboard{$dashboard = Dashboard::new()// the name visible to end users->setTitle('Institut d\'Études Scientifiques')// you can include HTML contents too (e.g. to link to an image)//->setTitle('<img src="..."> ACME <span class="text-small">Corp.</span>')// by default EasyAdmin displays a black square as its default favicon;// use this method to display a custom favicon: the given path is passed// "as is" to the Twig asset() function:// <link rel="shortcut icon" href="{{ asset('...') }}">->setFaviconPath('favicon.svg')// the domain used by default is 'messages'->setTranslationDomain('admin')->disableDarkMode()// there's no need to define the "text direction" explicitly because// its default value is inferred dynamically from the user locale// ->setTextDirection('ltr')// set this option if you prefer the page content to span the entire// browser width, instead of the default design which sets a max width->renderContentMaximized()// set this option if you prefer the sidebar (which contains the main menu)// to be displayed as a narrow column instead of the default expanded design//->renderSidebarMinimized()// by default, users can select between a "light" and "dark" mode for the// backend interface. Call this method if you prefer to disable the "dark"// mode for any reason (e.g. if your interface customizations are not ready for it)//->disableDarkMode()// by default, all backend URLs are generated as absolute URLs. If you// need to generate relative URLs instead, call this method->generateRelativeUrls()// set this option if you want to enable locale switching in dashboard.// IMPORTANT: this feature won't work unless you add the {_locale}// parameter in the admin dashboard URL (e.g. '/admin/{_locale}').// the name of each locale will be rendered in that locale// (in the following example you'll see: "English", "Polski")//->setLocales(['fr', 'en'])// to customize the labels of locales, pass a key => value array// (e.g. to display flags; although it's not a recommended practice,// because many languages/locales are not associated to a single country)->setLocales(['fr' => '🇫🇷 France','en' => '🇬🇧 English',])// to further customize the locale option, pass an instance of// EasyCorp\Bundle\EasyAdminBundle\Config\Locale//->setLocales([// 'fr',// 'en', // locale without custom options// //Locale::new('pl', 'polski', 'far fa-language') // custom label and icon//]);return $dashboard;}public function configureMenuItems(): iterable{/** @var User|null $user */$user = $this->getUser();$item = [MenuItem::linkToDashboard('Dashboard', 'fa fa-home'),MenuItem::section(t('menu.section.ecole', [], 'admin')),MenuItem::linkToCrud(t('menu.item.project_ecole', [], 'admin'), 'fa fa-tags', Ecole::class),];if ($user && ($user->isAdmin() || $user->isGestionnaireEcole())) {$item[] = MenuItem::linkToCrud(t('menu.item.inscription', [], 'admin'), 'fa fa-users', Inscription::class);$item[] = MenuItem::section(t('menu.section.email', [], 'admin'));$item[] = MenuItem::linkToCrud(t('menu.item.email', [], 'admin'), 'fa fa-envelope', Email::class);}return [...$item,MenuItem::section(t('menu.section.utilisateur', [], 'admin'))->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.utilisateur', [], 'admin'), 'fa fa-user', User::class)->setPermission(User::ROLE_ADMIN),MenuItem::section(t('menu.section.administration_ecole_form', [], 'admin'))->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.format_ecole', [], 'admin'), 'fa fa-gear', FormatEcole::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.frequence_ecole', [], 'admin'), 'fa fa-gear', FrequenceEcole::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.taille_ecole', [], 'admin'), 'fa fa-gear', TailleEcole::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.thematique_ecole', [], 'admin'), 'fa fa-gear', Thematique::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.institut_ecole', [], 'admin'), 'fa fa-gear', Institut::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.organisme_subvention', [], 'admin'), 'fa fa-gear', SubventionOrganisme::class)->setPermission(User::ROLE_ADMIN),MenuItem::section(t('menu.section.administration_inscription_form', [], 'admin'))->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.context_scientifique', [], 'admin'), 'fa fa-gear', InscriptionContextScientifique::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.lieu_logement', [], 'admin'), 'fa fa-gear', InscriptionLogementLieu::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.mode_transfert', [], 'admin'), 'fa fa-gear', InscriptionModeTransfert::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.mode_transport', [], 'admin'), 'fa fa-gear', InscriptionModeTransport::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.nb_participations', [], 'admin'), 'fa fa-gear', InscriptionNbParticipation::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.qualite', [], 'admin'), 'fa fa-gear', InscriptionQualite::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.repas', [], 'admin'), 'fa fa-gear', InscriptionRepas::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.situation', [], 'admin'), 'fa fa-gear', InscriptionSituation::class)->setPermission(User::ROLE_ADMIN),MenuItem::linkToCrud(t('menu.item.ville_arrive', [], 'admin'), 'fa fa-gear', InscriptionVilleArrive::class)->setPermission(User::ROLE_ADMIN),];}}