我正在做一个Symfony 5 + API平台项目。我仍然在与API过滤器作斗争。我在从某个控制器设置一个假的API路由之前完成了这项工作。但是,由于有一个API平台的开箱即用功能,允许这一点,我想“使”这一工作。
首先,实体过滤器被忽略了,API平台已经意识到了这一点。根据Symfony Profiler>API Platform>Resource Metadata:
根据同一页面中的数据提供者选项卡:
到目前为止,我所尝试的是将@ApiFilter()
注解添加到Question
实体,如API documentation解释的那样:
// ...
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=QuestionRepository::class)
* @ApiResource(normalizationContext={"groups"={"question"}})
* @ApiFilter(SearchFilter::class, properties={"status": "partial"})
*/
class Question
{
// ...
/**
* @ORM\Column(type="string", length=255)
* @Groups("question")
*/
private $status;
// ...
}
我还尝试在需要过滤的属性上指定过滤器。(感谢 @EugeneRuban 从以前的问题)。
那么,为什么API Platform会忽略过滤器呢?
1条答案
按热度按时间mgdq6dx11#
经过一段时间的调试,原来这是错误的use语句造成的。
有效的方法是:
不起作用的是:
奇怪的是,这些参数确实在Swagger中出现在最后一个错误的use语句中。但它们实际上不起作用。