coo*_*mer 4 php symfony api-platform.com
我目前有这个实体,我想在我的 JSON 中显示我的属性“firedDate”,即使该值为空。
/**
* @ApiResource(normalizationContext={"groups"={"employee"}})
* @ApiFilter(DateFilter::class, properties={"dateProperty": DateFilter::INCLUDE_NULL_BEFORE_AND_AFTER})
* @ORM\Table(name="employee")
*/
class Employee
{
// ...
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"employee"})
*/
private $firedDate;
public function getFiredDate(): ?\DateTimeInterface
{
return $this->firedDate;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我在做什么错?:/ 谢谢!
Win*_*zza 16
我想我找到了解决这个问题的正确方法。设置skip_null_values在false您的normalizationContext:
* @ApiResource(
* itemOperations={
* "get" = {
* //...
* }
* "put" = {
* //...
* },
* "patch" = {
* //...
* }
* },
* collectionOperations={
* "get",
* "post" = {
* //...
* }
* },
* normalizationContext={
* "skip_null_values" = false,
* "groups" = {"object:read"}
* },
* denormalizationContext={"groups" = {"object:write"}}
* )
Run Code Online (Sandbox Code Playgroud)
在 ApiPlatform 3 上,默认值已从更改skip_null_values=false为skip_null_values=true。
如果您不想在每个资源上设置此项,并且希望在 ApiPlatform < 3 上使用默认值,则可以简单地在全局配置中设置它:
api_platform:
defaults:
normalization_context:
skip_null_values: false
Run Code Online (Sandbox Code Playgroud)
或者如果您使用基于 PHP 的配置:
return static function (Symfony\Config\ApiPlatformConfig $apiConfig): void {
$apiConfig
->defaults()
->normalizationContext(['skip_null_values' => false]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2765 次 |
| 最近记录: |