Wie übergebe ich Kontextfilter über Dienste an eine Ansicht?

11

Ich habe eine Ansicht, die einen Kontextfilter akzeptiert, um die richtigen Ergebnisse zurückzugeben. Ich verwende Services 3 und Drupal 7. Ich kann einen Endpunkt erstellen und die Ansicht über Services abrufen. Es scheint jedoch keine Möglichkeit zu geben, den Kontextfilter zu übergeben, da services_views nur über eine Abrufmethode verfügt (die GET verwendet). Weiß jemand, ob dies möglich ist und wenn ja, wie es gemacht werden kann?

user379468
quelle

Antworten:

14

Übergeben Sie Ihren Filter wie folgt: Ihr Endpunkt? args [0] = Wert & args [1] = Wert

Viel Glück

Bassel Alkhateeb
quelle
3

Solange die Filter in der Ansicht verfügbar sind, stehen die Feldnamen als Kontextfilter zur Verfügung. Stellen Sie beispielsweise NID in der Filterliste bereit, und Sie können dies tun

GET /endpoint?nid=5
Cybertoast
quelle
1
Diese Lösung funktioniert für exponierte Filterkriterien. Nach meinem besten Wissen funktionieren Kontextfilter nicht, aber dies ist eine hervorragende Problemumgehung.
Brent
3

Dies ist eine bereits beantwortete Frage, aber für andere, die in Zukunft hier surfen, würde ich empfehlen, die Dokumentation unter Services Views zu verwenden und einen Blick darauf zu werfen . Es beschreibt, wie Kontextfilter zusammen mit einer Reihe anderer möglicher Argumente übergeben werden. Es enthält ein Demo-Video und zeigt Beispiele.

cdmo
quelle
1
Nach weiteren Recherchen scheint dies ohne Änderung von services_views nicht möglich zu sein.
user379468
2

Wenn Sie in Ihrem Kontextfilter mehrere Werte verwenden müssen, empfehle ich Folgendes:

  • Erstellen Sie Ihren Kontextfilter (in meinem Fall: nid)
  • Klicken Sie auf "Standardwert angeben" und legen Sie den Typ als PHP-Kontextfilter fest. Erwarten Sie eine Zeichenfolge mit mehreren Werten, die durch ein + oder ein Komma getrennt sind.

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

  • Aktivieren Sie im Abschnitt "Mehr" die Option "Mehrere Werte zulassen".

Geben Sie jetzt beim Aufrufen Ihres Dienstes Ihre Kontextfilter folgendermaßen an: ... / my_service? Nid = 1 | 2 | 3

Ebpo
quelle
2

Stellen Sie für diejenigen unter Ihnen, die weiterhin Probleme haben, sicher, dass beim Hinzufügen eines Filters zur Ansicht unter den Einstellungen für das angegebene Feld eine Filterkennung vorhanden ist. Dies muss das Argument sein, das in den beiden in der Dokumentation zu Services Views aufgeführten Formaten an den Querystring übergeben wird.

Kennzeichen
quelle
Ich hatte Probleme damit, überhaupt nicht intuitiv, da ich mir vorstellte, der Titel würde als Filterschlüssel verwendet. Vielen Dank!
Donnadulcinea
1

Ich konnte mit Drupal Services einen Kontextfilter erhalten, indem ich: 1) das Modul 'Views Contextual Filter Query' ( https://drupal.org/project/views_contextual_filter_query ) aktivierte 2) den Kontextfilter als Abfragering durch die URL leitete.

Im Kontextfilter müssen Sie "WENN DER FILTERWERT NICHT VERFÜGBAR IST" -> "Abfrageparameter" aus der URL auswählen. Anschließend können Sie den Parameternamen hinzufügen, den Sie in der URL verwenden. Auf diese Weise können Sie auch die Tasten + und | verwenden Zeichen zur Auswahl mehrerer Filterkriterien.

thomaschall
quelle