Symfony EasyAdmin Bundle自定义全局动作弹窗实现求助
EasyAdmin:将addFlash提示替换为弹窗展示抽奖获奖者
我在EasyAdmin后台的全局动作里实现了抽奖功能,目前用addFlash在页面顶部显示获奖者信息,但希望改成弹窗形式展示。
我尝试过用JavaScript、修改Twig模板,也查过官方文档、教程以及用ChatGPT查询,但始终找不到针对EasyAdmin全局动作弹窗的实现方案,现在陷入困境,求解决思路。
以下是我的NewsletterUserlistCrudController代码:
<?php namespace App\Controller\Admin; use App\Entity\NewsletterUserlist; use Doctrine\ORM\EntityManager; use EasyCorp\Bundle\EasyAdminBundle\Config\Action; use EasyCorp\Bundle\EasyAdminBundle\Config\Actions; use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField; use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField; use EasyCorp\Bundle\EasyAdminBundle\Field\IdField; use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator; use Symfony\Component\HttpFoundation\Response; use Doctrine\ORM\EntityManagerInterface; class NewsletterUserlistCrudController extends AbstractCrudController { public static function getEntityFqcn(): string { return NewsletterUserlist::class; } public function configureFields(string $pageName): iterable { return [ IdField::new('id')->hideOnForm(), EmailField::new('mail'), DateTimeField::new('created_at')->hideOnForm(), ]; } public function configureCrud(Crud $crud): Crud { return $crud ->renderContentMaximized() ->renderSidebarMinimized() ->setEntityLabelInSingular('Email') ->setEntityLabelInPlural('Newsletter'); } public function configureActions(Actions $actions): Actions { $exportAction = Action::new('giveaway') ->linkToCrudAction('giveaway') ->addCssClass('btn btn-success') ->setIcon('fa fa-download') ->createAsGlobalAction(); return parent::configureActions($actions) ->add(Crud::PAGE_INDEX, $exportAction); } public function giveaway(AdminContext $context, AdminUrlGenerator $adminUrlGenerator, EntityManagerInterface $em) { $randomUser = $em->getRepository(NewsletterUserlist::class)->findRandomUser(); $randomUserMessage = 'Ceci est un test avec l\'utilisateur : ' . $randomUser->getMail(); $this->addFlash('success', 'Félicitation à ' . $randomUser->getMail()); $url = $adminUrlGenerator ->setAction(Action::INDEX) ->removeReferrer() ->setController($context->getCrud()?->getControllerFqcn() ?? '') ->generateUrl(); return $this->redirect($url); } }
我也尝试过查看EasyAdmin的父Twig模板,但没理清相关逻辑,希望能得到具体的实现方案。
内容的提问来源于stack exchange,提问作者Saltiplouf
相关产品推荐
相关产品推荐

