setPageTitle(Crud::PAGE_EDIT, t($this->getPageTitle(), [], DashboardController::DOMAIN)) ->setPageTitle(Crud::PAGE_DETAIL, t($this->getEntityLabelInSingular(), [], DashboardController::DOMAIN)) ->setEntityLabelInPlural($this->getEntityLabelInPlural()) ->setEntityLabelInSingular($this->getEntityLabelInSingular()) ->setFormThemes([ '@EasyAdmin/crud/form_theme.html.twig', 'easy_admin/crud/form_theme.html.twig', ]) ; } public function configureActions(Actions $actions): Actions { // Better button label for this kind of page $actions->update(Crud::PAGE_EDIT, Action::SAVE_AND_CONTINUE, function (Action $action) { return $action->setLabel('action.save'); }); $itemsListUrl = $this->adminUrlGenerator ->unsetAll() ->setController($this->getMenuItemCrudControllerClass()) ->set('crudAction', Crud::PAGE_INDEX) ->set('menuIndex', $this->getMenuItemsIndex()) ->generateUrl(); $itemsList = Action::new('editMenuItems', 'menu.action.items_list') ->linkToUrl($itemsListUrl); return $actions ->remove(Crud::PAGE_INDEX, Action::NEW) ->remove(Crud::PAGE_INDEX, Action::DELETE) ->remove(Crud::PAGE_DETAIL, Action::DELETE) ->remove(Crud::PAGE_DETAIL, Action::INDEX) ->remove(Crud::PAGE_EDIT, Action::SAVE_AND_RETURN) ->add(Crud::PAGE_EDIT, Action::DETAIL) ->add(Crud::PAGE_EDIT, $itemsList) ; } public static function getEntityFqcn(): string { return Menu::class; } /** * Return all possible fields. * * @return array */ public function getFields(string $pageName): array { $logoField = ImageField::new('logo') ->setBasePath($this->menuBasePath) // correctly set the formatted value available in the template ->setUploadDir('public'.$this->menuBasePath) ->setUploadedFileNamePattern('[uuid].[extension]') ->setFormTypeOption('upload_new', $this->easyAdminHelper->getUploadNewCallback($this->defaultStorage)) ->setFormTypeOption('upload_delete', $this->easyAdminHelper->getUploadDeleteCallback($this->defaultStorage)) ->setFormTypeOption('constraints', $this->mediaManager->getFileConstraints()) ->setTemplatePath('easy_admin/field/flysystem_image.html.twig') ->setHelp($this->mediaManager->getHelpMessage()) ; $code = TextField::new('code'); $items = CollectionField::new('items') ->useEntryCrudForm(MenuItemCrudController::class) ; $itemsCount = IntegerField::new('itemsCount'); $createdAt = DateTimeField::new('createdAt'); $updatedAt = DateTimeField::new('updatedAt'); return compact( 'logoField', 'items', 'itemsCount', 'code', 'createdAt', 'updatedAt', ); } public function configureFields(string $pageName): iterable { $panels = $this->getPanels(); [ 'logoField' => $logoField, 'itemsCount' => $itemsCount, 'code' => $code, 'createdAt' => $createdAt, 'updatedAt' => $updatedAt, ] = $this->getFields($pageName); if ($pageName === Crud::PAGE_INDEX) { return [$code, $logoField, $itemsCount, $createdAt, $updatedAt]; } if ($pageName === Crud::PAGE_DETAIL) { return [ $panels['information'], $logoField, $itemsCount, $panels['tech_information'], $code, $createdAt, $updatedAt, ]; } // edit page return [$logoField]; } }