You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 11:52:48