在 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
并提交您的锁定文件。
我在 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
并提交您的锁定文件。