我想使用subresource
的DataProvider
来更改数据库中的一些数据。但当我这样做的时候,它进入了一个无限循环?如何阻止?
<?php
namespace App\DataProvider;
use ApiPlatform\Core\DataProvider\SubresourceDataProviderInterface;
class MessageDataProvider implements SubresourceDataProviderInterface
{
private $subresourceDataProvider;
public function __construct(SubresourceDataProviderInterface $subresourceDataProvider)
{
$this->subresourceDataProvider = $subresourceDataProvider;
}
public function getSubresource(string $resourceClass, array $identifiers, array $context, string $operationName = null)
{
return $this->subresourceDataProvider->getSubresource($resourceClass, $identifiers, $context, $operationName);
}
}
2条答案
按热度按时间b4wnujal1#
MessageDataProvider
类实现了SubresourceDataProviderInterface
,它也是构造函数中的一个参数- symfony可能会试图通过将MessageDataProvider
放入构造函数中来自动连接SubresourceDataProviderInterface
。但是为了将MessageDataProvider
放入构造函数中,它必须首先构建一个这种类型的示例。为此,需要调用MessageDataProvider
构造函数。.无限循环就是这样产生的。如果您打算注入一个
SubresourceDataProvider
的实体,您可以显式配置MessageDataProvider
服务。链接到文档b4lqfgs42#
我在这个链接上找到了解决方案
https://github.com/api-platform/core/issues/2816#issuecomment-494579509
编辑:我用
SubresourceDataProviderInterface
做了两个例子www.example. com
https://github.com/aratinau/api-platform-pagination#eighth-example-use-querybuilder-in-subresource