Bagaimana cara meneruskan filter kontekstual ke tampilan melalui layanan

11

Saya memiliki pandangan yang menerima filter kontekstual untuk mengembalikan hasil yang benar. Saya menggunakan Layanan 3 dan Drupal 7. Saya dapat membuat titik akhir, dan mengambil tampilan melalui layanan. Tetapi sepertinya tidak ada cara untuk melewatkan filter kontekstual, karena services_views hanya memiliki metode pengambilan (yang menggunakan GET). Adakah yang tahu apakah ini mungkin, dan jika demikian bagaimana hal itu bisa dilakukan?

pengguna379468
sumber

Jawaban:

14

lulus filter Anda sebagai berikut: yourendpoint? args [0] = value & args [1] = value

Semoga berhasil

Bassel Alkhateeb
sumber
3

Selama filter terpapar dalam tampilan, nama-nama bidang tersedia sebagai filter kontekstual. Misalnya, buka NID dalam daftar filter dan Anda dapat melakukannya

GET /endpoint?nid=5
cybertoast
sumber
1
Solusi ini berfungsi untuk kriteria filter terbuka. Sejauh yang terbaik dari pengetahuan saya, filter kontekstual tidak berfungsi, tetapi ini adalah solusi yang luar biasa.
Brent
3

Ini adalah pertanyaan yang sudah dijawab, tetapi untuk orang lain yang menjelajah di sini di masa depan, saya akan merekomendasikan menggunakan dan melihat dokumentasi di Services Views . Itu menjabarkan bagaimana cara melewatkan filter kontekstual bersama dengan sekelompok argumen lain yang mungkin, dan memiliki video demo dan menunjukkan contoh.

cdmo
sumber
1
Setelah melakukan penelitian lebih lanjut, tampaknya ini tidak mungkin dilakukan tanpa modifikasi services_views.
user379468
2

Jika Anda harus menggunakan beberapa nilai dalam filter kontekstual Anda, saya sarankan melakukan hal berikut:

  • Buat filter kontekstual Anda (dalam kasus saya: nid)
  • Klik "Berikan nilai default" dan tetapkan jenisnya sebagai Filter Kontekstual PHP mengharapkan string dengan beberapa nilai dipisahkan dengan tanda + atau koma.

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

  • Di bagian "Lainnya", centang "Izinkan beberapa nilai".

Sekarang saat memanggil layanan Anda, berikan filter kontekstual Anda seperti itu: ... / my_service? Nid = 1 | 2 | 3

Ebpo
sumber
2

Bagi Anda yang masih mengalami masalah, pastikan bahwa saat Anda menambahkan Filter ke Tampilan, di bawah pengaturan untuk Bidang yang ditentukan, ada pengidentifikasi Filter. Ini perlu argumen yang dilewatkan ke querystring dalam dua format yang tercantum pada dokumentasi Layanan Views.

Menandai
sumber
Saya berjuang tentang itu, tidak intuitif sama sekali karena saya membayangkan judul yang akan digunakan sebagai kunci filter. Terima kasih!
donnadulcinea
1

Saya bisa mendapatkan filter kontekstual dengan Layanan Drupal dengan: 1) mengaktifkan modul 'Views Contextual Filter Query' ( https://drupal.org/project/views_contextual_filter_query ) 2) meneruskan filter kontekstual melalui URL sebagai querystring.

Dalam filter kontekstual, Anda harus memilih 'KETIKA NILAI FILTER TIDAK TERSEDIA' -> 'Parameter Kueri dari URL. Anda kemudian dapat menambahkan nama parameter yang akan Anda gunakan di URL. Ini juga memungkinkan Anda untuk menggunakan tanda + dan | karakter untuk memilih beberapa kriteria filter.

thomaschall
sumber