Come faccio a passare i filtri contestuali a una vista tramite servizi


11

Ho una vista che accetta un filtro contestuale al fine di restituire i risultati corretti. Sto usando i servizi 3 e Drupal 7. Sono in grado di creare un endpoint e recuperare la vista tramite i servizi. Ma sembra che non ci sia modo di passare il filtro contestuale, poiché services_views ha solo un metodo di recupero (che utilizza GET). Qualcuno sa se questo è possibile e, in caso affermativo, come può essere fatto?

Risposte:


14

passa il filtro come segue: yourendpoint? args [0] = value & args [1] = value

In bocca al lupo


3

Finché i filtri sono esposti nella vista, i nomi dei campi sono disponibili come filtri contestuali. Ad esempio, esporre NID nell'elenco dei filtri e puoi farlo

GET /endpoint?nid=5

1
Questa soluzione funziona per i criteri di filtro esposti. Per quanto ne so, i filtri contestuali non funzionano, ma si tratta di una soluzione eccezionale.
Brent,

3

Questa è una domanda a cui è già stata data una risposta, ma per gli altri che navigano qui in futuro, consiglierei di usare e dare un'occhiata alla documentazione in Servizi Viste . Spiega come passare i filtri contestuali insieme a una serie di altri argomenti possibili, e ha un video dimostrativo e mostra esempi.


1
Dopo aver fatto ulteriori ricerche, sembra che ciò non sia possibile senza la modifica di services_views.
user379468,

2

Se devi usare più valori nel tuo filtro contestuale, ti suggerisco di fare quanto segue:

  • Crea il tuo filtro contestuale (nel mio caso: nid)
  • Fai clic su "Fornisci un valore predefinito" e imposta il tipo come Filtro contestuale PHP prevede una stringa con valore multiplo separati da un + o una virgola.

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

  • Nella sezione "Altro", seleziona "Consenti valori multipli".

Ora, quando chiami il tuo servizio, fornisci i filtri contestuali in questo modo: ... / my_service? Nid = 1 | 2 | 3


2

Per quelli di voi che hanno ancora problemi, assicurarsi che quando si aggiunge un filtro alla vista, nelle impostazioni per il campo specificato, ci sia un identificatore di filtro. Questo deve essere l'argomento passato nella stringa di query nei due formati elencati nella documentazione di Servizi Viste.


Stavo lottando su questo, per nulla intuitivo da quando ho immaginato il titolo da utilizzare come chiave di filtro. Grazie!
donnadulcinea,

1

Sono stato in grado di ottenere un filtro contestuale con Drupal Services: 1) abilitando il modulo "Visualizzazioni filtro contestuale query" ( https://drupal.org/project/views_contextual_filter_query ) 2) passando il filtro contestuale attraverso l'URL come una stringa di query .

Nel filtro contestuale, dovrai selezionare "QUANDO IL VALORE DEL FILTRO NON È DISPONIBILE" -> "Parametro di query dall'URL. Sarai quindi in grado di aggiungere il nome del parametro che utilizzerai nell'URL. Ciò consente anche di utilizzare + e | caratteri per la selezione di più criteri di filtro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.