¿Cómo paso los filtros contextuales a una vista a través de los servicios?

11

Tengo una vista que acepta un filtro contextual para devolver los resultados correctos. Estoy usando los Servicios 3 y Drupal 7. Puedo crear un punto final y recuperar la vista a través de los servicios. Pero parece que no hay forma de pasar el filtro contextual, porque services_views solo tiene un método de recuperación (que usa GET). ¿Alguien sabe si esto es posible y, de ser así, cómo se puede hacer?

usuario379468
fuente

Respuestas:

14

pase su filtro de la siguiente manera: yourendpoint? args [0] = valor & args [1] = valor

Buena suerte

Bassel Alkhateeb
fuente
3

Mientras los filtros estén expuestos en la vista, los nombres de campo estarán disponibles como filtros contextuales. Por ejemplo, exponga NID en la lista de filtros y puede hacer

GET /endpoint?nid=5
cybertoast
fuente
1
Esta solución funciona para criterios de filtro expuestos. Que yo sepa, los filtros contextuales no funcionan, pero esta es una solución alternativa sobresaliente.
Brent
3

Esta es una pregunta ya respondida, pero para otros que naveguen aquí en el futuro, recomendaría usar y echar un vistazo a la documentación en Vistas de servicios . Explica cómo pasar filtros contextuales junto con un montón de otros posibles argumentos, y tiene un video de demostración y muestra ejemplos.

cdmo
fuente
1
Después de investigar más, parece que esto no es posible sin la modificación de services_views.
user379468
2

Si tiene que usar valores múltiples en su filtro contextual, le sugiero que haga lo siguiente:

  • Crea tu filtro contextual (en mi caso: nid)
  • Haga clic en "Proporcionar un valor predeterminado" y establezca el tipo como PHP. El filtro contextual espera una cadena con varios valores separados por un + o una coma.

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

  • En la sección "Más", marque "Permitir valores múltiples".

Ahora, cuando llame a su servicio, proporcione sus filtros contextuales de esa manera: ... / my_service? Nid = 1 | 2 | 3

Ebpo
fuente
2

Para aquellos de ustedes que todavía tienen problemas, asegúrese de que cuando agregue un Filtro a la Vista, en la configuración del Campo especificado, haya un identificador de Filtro. Este debe ser el argumento pasado a la cadena de consulta en los dos formatos enumerados en la documentación de Vistas de servicios.

marca
fuente
Estaba luchando por eso, nada intuitivo ya que imaginé que el título se usaría como clave de filtro. ¡Gracias!
donnadulcinea
1

Pude obtener un filtro contextual con Drupal Services: 1) habilitando el módulo 'Consulta de filtro contextual de vistas' ( https://drupal.org/project/views_contextual_filter_query ) 2) pasando el filtro contextual a través de la URL como una cadena de consulta.

En el filtro contextual, deberá seleccionar 'CUANDO EL VALOR DEL FILTRO NO ESTÁ DISPONIBLE' -> 'Consultar parámetro desde la URL. Luego podrá agregar el nombre del parámetro que usará en la URL. Esto también le permite usar el + y | caracteres para seleccionar múltiples criterios de filtro.

Thomaschall
fuente