如何通过服务将上下​​文过滤器传递给视图


11

我有一个接受上下文过滤器的视图,以便返回正确的结果。我正在使用Services 3和Drupal7。我能够创建一个端点,并通过服务检索视图。但是似乎没有办法通过上下文过滤器,因为services_views只有一个retrieve方法(使用GET)。有谁知道这是否可能,如果可以,怎么办?

Answers:



3

只要过滤器在视图中公开,字段名称就可以用作上下文过滤器。例如,在过滤器列表中公开NID,您可以

GET /endpoint?nid=5

1
该解决方案适用于暴露的过滤条件。据我所知,上下文过滤器不起作用,但这是一个出色的解决方法。
布伦特

3

这是一个已经回答的问题,但是对于将来在这里浏览的其他人,我建议使用并查看Services Views上的文档。它阐明了如何将上下文过滤器与其他可能的参数一起传递,并提供了一个演示视频并显示了示例。


1
经过进一步的研究后,如果不修改services_views,这似乎是不可能的。
user379468 2012年

2

如果您必须在上下文过滤器中使用多个值,建议您执行以下操作:

  • 创建上下文过滤器(以我为例:nid)
  • 单击“提供默认值”,然后将类型设置为“ PHP上下文过滤器”,期望字符串中包含多个用+或逗号分隔的值。

return str_replace("|", "+", $_GET['nid']);

  • 在“更多”部分中,选中“允许多个值”。

现在,在调用服务时,以这种方式提供上下文过滤器:... / my_service?nid = 1 | 2 | 3


2

对于仍然存在问题的人员,请确保在将过滤器添加到视图时,在指定字段的设置下有一个过滤器标识符。这需要以服务视图文档中列出的两种格式传递到查询字符串中的参数。


我一直在努力,一点也不直观,因为我想象标题将用作过滤键。谢谢!
donnadulcinea 2015年

1

我可以通过以下方式使用Drupal Services获得上下文过滤器:1)启用“视图上下文过滤器查询”模块(https://drupal.org/project/views_contextual_filter_query)2)通过URL将上下文过滤器作为查询字符串传递。

在上下文过滤器中,您将必须从URL中选择“何时无法使用过滤器值”->“查询参数”。然后,您将能够添加将在URL中使用的参数名称。这也允许您使用+和|。用于选择多个过滤条件的字符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.