【发布时间】:2023-02-17 17:24:14
【问题描述】:
我最近将一个巨大的项目从 Apiplatform 2.6 迁移到 3.0。我正在将我的控制器转换为提供者和处理器,但我遇到了一些问题。
我尝试在展示网站上阻止对我的用户的操作。我的端点看起来像那样(id = showcase website id 和 blockOrder = boolean):
#[ApiResource(
operations: [
new Post(
uriTemplate: '/shop/{id}/all/block-order/{blockOrder}',
status: 200,
processor: UpdateBlockOrderToAllParticipantsProcessor::class,
read: false,
deserialize: false,
serialize: false
),
],
normalizationContext: ['groups' => ['shop:read:bo', 'shop:dashboard:bo', 'shop:read:bo', 'lifecycle']],
denormalizationContext: ['groups' => ['shop:write:bo']],
provider: ShopProvider::class
)]
我的问题来自处理器中的值“$data”。我认为我在端点中得到了错误的信息,然后当我在邮递员中调用它时,它抛出了这个错误:
public function process(mixed $data, ApiOperation $operation, array $uriVariables = [], array $context = [])
{
assert($data instanceof Shop);
return $response;
}
错误 :
{
"@context": "/bo/contexts/Error",
"@type": "hydra:Error",
"hydra:title": "An error occurred",
"hydra:description": "Could not resolve argument $data of \"api_platform.action.placeholder::__invoke()\", maybe you forgot to register the controller as a service or missed tagging it with the \"controller.service_arguments\"?",
...
}
如何在没有此错误的情况下获取我的商店数据?
【问题讨论】:
-
请提供更多详细信息,我们无法为您提供此类详细信息。请不要复制图像,而是添加完整的代码块或错误字符串。
-
我用我的代码更新了我的图像。我不知道如何详细说明。我用我的 shopId 调用这个端点,处理器应该在数据库中返回我的对象商店。也许端点是错误的并且 blockOrder 的值导致了错误。也许 ApiPlatform 不允许这种类型的使用。
-
您能否使用重现错误的最少代码共享一个新项目?