基于 DTO 创建了一个非常简单的资源。所有逻辑都将通过自定义
DataProvider
提供,并且此项目不使用任何注释。
资源的配置是:
<resources xmlns="https://api-platform.com/schema/metadata">
<resource class="App\Domain\Dto\ProductUpgradePrice">
<collectionOperations>
<collectionOperation name="get"/>
</collectionOperations>
<itemOperations>
<itemOperation name="get"/>
</itemOperations>
</resource>
</resources>
实际的DTO是:
<?php declare(strict_types=1);
namespace App\Domain\Dto;
/** @psalm-immutable */
class ProductUpgradePrice
{
public function __construct(
public string $productId,
public int $regularPrice,
public int $upgradePrice
) {}
}
当我尝试
GET /api/product_upgrade_prices
时,我得到:
没有为 App\Domain\Dto\ProductUpgradePrice 类型的资源定义标识符
这很有道理。
docs提到使用注释
@ApiProperty
,但正如我之前提到的,这个项目没有注释。 (自从我发布问题以来,我向更新文档提交了一个PR,该问题已合并,所以希望未来的用户不会遇到同样的情况)
我尝试将其添加到资源配置中:
<property name="productId">
<attribute name="identifier">true</attribute>
</property>
但得到了相同的结果。
如何在不使用注释的情况下进行配置?