Pur*_*ski 1 php symfony api-platform.com
因为我更喜欢 stackoverflow 然后是 github,所以我将这个问题的对话移到这里。
例如,您可能有一个具有deletedAt字段的用户。由于某些业务原因用户被删除,但由于其他原因,您可能希望通过将deletedAt字段设置为空来激活他。如果您尝试使用 API Platform 执行此操作,您将收到此错误:
The data is either an empty string or null, you should pass a string that can be parsed with the passed format or a valid DateTime string.
问题是,处理它的最佳方法是什么?
这是我如何处理它。
我扩展了 API 平台 DateTimeNormalizer:
namespace App\Normalizer;
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer as APIPlatformDateTimeNormalizer;
class DateTimeNormalizer extends APIPlatformDateTimeNormalizer
{
    public function denormalize($data, $type, $format = null, array $context = [])
    {
        if (null === $data) {
            return null;
        }
        return parent::denormalize($data, $type, $format, $context);
    }
}
并将其定义为与父规范化器同名的服务,而父规范化器实际上覆盖了它 ( api/config/services.yml):
services:
    serializer.normalizer.datetime:
            class: App\Normalizer\DateTimeNormalizer
            tags:
                - { name: serializer.normalizer }