Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在自定义操作中使用默认API平台过滤器?_Php_Symfony_Api Platform.com - Fatal编程技术网

Php 如何在自定义操作中使用默认API平台过滤器?

Php 如何在自定义操作中使用默认API平台过滤器?,php,symfony,api-platform.com,Php,Symfony,Api Platform.com,我有定制的action(),它生成一些逻辑并返回实体集合 使用常规的api平台操作过滤器可以完美地工作。但我如何在自定义操作中使用此集合 当我请求GET/cars?createdAt[after]=2018-08-01或GET/drivers?createdAt[after]=2018-08-01时,它会按预期工作 但当我尝试执行GET/drivers/42/cars\u custom\u logic?createdAt[after]=2018-08-01时,它不会过滤任何内容。这是意料之中的,

我有定制的action(),它生成一些逻辑并返回实体集合

使用常规的api平台操作过滤器可以完美地工作。但我如何在自定义操作中使用此集合

当我请求
GET/cars?createdAt[after]=2018-08-01
GET/drivers?createdAt[after]=2018-08-01
时,它会按预期工作

但当我尝试执行
GET/drivers/42/cars\u custom\u logic?createdAt[after]=2018-08-01
时,它不会过滤任何内容。这是意料之中的,因为我在自定义操作中没有调用过滤器,但我的问题是–如何添加此过滤器


App\Entity\Car

如果您尝试通过yaml这样添加:

# api/config/api_platform/resources.yaml
App\Entity\Book:
    attributes:
       filters: [ offer.date_filter ]
    itemOperations:
        get: ~
        special:
            method: 'GET'
            path: '/books/{id}/special'
            controller: 'App\Controller\BookSpecial'

有关详细信息,请参阅本文档:


希望有帮助

你能展示一下你到目前为止做了什么吗?@Gregoid,当然,我用代码更新了我的问题。@trogwar你是如何解决这个问题的?如果你能想出解决办法,你介意回答你自己的问题吗?我的情况完全一样…@KoviNET,嗯,不完全一样。据我所知,逻辑很简单:如果您需要实现自定义操作,那么您可以自己完成所有自定义操作。@trogwar我通过在controller中手动获取参数并将其传递给存储库中的查询生成器来解决这个问题。它可以工作,但并没有自动生成的hydra文档,并且有一些代码重复,这不是很好。谢谢你们的回答!我看过文档,如果我理解正确的话,有三种配置选项:注释(我使用了这个),yaml的两种方式。在您的配置中,一切都像我一样工作——没有错误,但没有过滤器。我认为这是因为在ApiPlatform的控制器中,他们不知何故调用了这些过滤器,但我没有。我在文档中没有看到如何从我的自定义操作调用它们。没有缓存,但用“cache:clear”清除-同样的事情。
# api/config/api_platform/resources.yaml
App\Entity\Book:
    itemOperations:
        get: ~
        special:
            method: 'GET'
            path: '/books/{id}/special'
            controller: 'App\Controller\BookSpecial'
            filters: ['offer.date_filter']