API平台-始终对自定义操作应用过滤器

时间:2018-10-30 19:53:06

标签: php api-platform.com

我在我的实体(/api/posts/active)上执行了自定义收集操作,并且我希望始终对其应用一些过滤条件:

  1. 仅获取具有active = true的内容;
  2. 仅使用onlineUntil> now();

如何仅针对特定的collectionOperation(而不是全部)执行此操作?

此外,我如何默认实现这些过滤器,而又不依赖于诸如/posts/:id/active?active=true之类的查询字符串。

我已经阅读了有关过滤的文档,但我真的很困惑,因为他们从未提及仅过滤特定操作或默认情况下应用过滤器而没有查询字符串。

2 个答案:

答案 0 :(得分:1)

我认为这里不需要过滤器。您可以通过自定义操作(请参见文档中的custom operation section)和switch off receiving来实现您的目标。然后,在__invoke方法内部,从PostRepository获取带有qustom查询的活动帖子的集合,可以通过在其中注入自定义操作构造函数来在其中进行检索:

public function __construct(EntityManagerInterface $em)
{
    $this->em = $em;
}

答案 1 :(得分:1)

这是自定义扩展(https://api-platform.com/docs/core/extensions)的典型用例