【发布时间】:2018-02-16 16:30:43
【问题描述】:
为什么 symfony 忽略我的自定义规范器?
src/AppBundle/Serializer/Normalizer/ExceptionNormalizer.php
<?php
namespace AppBundle\Serializer\Normalizer;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
/**
* Class ExceptionNormalizer
*/
class ExceptionNormalizer implements NormalizerInterface
{
/**
* {@inheritdoc}
*/
public function normalize($object, $format = null, array $context = array()): array
{
return [];
}
/**
* {@inheritdoc}
*/
public function supportsNormalization($data, $format = null): bool
{
return $data instanceof \Exception;
}
}
src/AppBundle/Resources/config/services.yml
services:
...
app.normalizer.exception:
class: AppBundle\Serializer\Normalizer\ExceptionNormalizer
tags:
- { name: serializer.normalizer }
app/config/config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
#- { resource: services.yml } exclude default services file
- { resource: "@AppBundle/Resources/config/services.yml" }
异常输出
{"error":{"code":404,"message":"Not Found","exception":[{"message":"AppBundle\Entity\User 对象未找到。","class": “Symfony\组件.....
预期的异常输出
{}
【问题讨论】:
-
欢迎堆栈溢出。请花一些时间阅读发布指南,否则您可能会得到反对票。
-
看起来它与规范器无关 - 它没有尝试使用 User 实体
-
@JasonRoman 它的异常规范化器,而不是用户的规范化器。我尝试在其他东西上重新定义异常输出,但我有相同的字符串和异常信息
-
显示您定义和调用 Serializer 或此 Normalizer 的代码。
标签: php symfony symfony-3.3