在 Heroku 上部署后,EasyAdmin 中的 date/time 字段出错

Error with date/time fields in EasyAdmin once deployed on Heroku

我在 Symfony 6.0.9 网站上工作,使用 EasyAdmin 来处理管理面板。 我有一个实体 ProfessionalExperience,它的一些属性是日期。 EasyAdmin 的 CRUD 控制器如下所示:

class ProfessionalExperienceCrudController extends AbstractCrudController
{
    public static function getEntityFqcn(): string
    {
        return ProfessionalExperience::class;
    }

    public function configureCrud(Crud $crud): Crud
    {
        ...
    }

    public function configureFields(string $pageName): iterable
    {
        return [
            ...
            DateTimeField::new('start')
                ->setFormat('Y-MM-dd'),
            DateTimeField::new('stop')
                ->setFormat('Y-MM-dd'),
            ...
        ];
    }
}

它在我的开发环境中工作得很好,在 Heroku 上构建和部署也工作得很好。 但是,当我尝试单击以访问已部署网站中管理面板的这一部分时,我在 Heroku 的日志中遇到了这个错误:

[critical] Uncaught PHP Exception LogicException: "When using date/time fields in EasyAdmin backends, you must install and enable the PHP Intl extension, which is used to format date/time values." at /app/vendor/easycorp/easyadmin-bundle/src/Field/Configurator/DateTimeConfigurator.php line 37

我不明白,因为在我的 Dockerfile 中,我有这个 :

RUN set -eux; \
    apk add --no-cache --virtual .build-deps \
        $PHPIZE_DEPS \
        icu-dev \
        libzip-dev \
        zlib-dev \
    ; \
    \
    docker-php-ext-configure zip; \
    docker-php-ext-install -j$(nproc) \
        intl \
        zip \
    ; \

谢谢你帮助我! ;)

您可以尝试在 composer.json 中添加扩展程序。

您可以在 heroku documentation 中看到,您可以通过在 composer.json 中添加要安装的可选扩展。

{
    "require": {
        "ext-intl": "*",
    }
}

不要忘记 运行 composer update 并提交您的锁定文件。