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?

Jawaban:


14

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

Semoga berhasil


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

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.


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


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.


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.