Bagaimana cara mengakses services_views dengan cara yang benar?


11

Saya mencoba mengambil beberapa tampilan dengan modul services_views . Sedihnya, saya terus mendapatkan respons: "404: Tidak ditemukan: Tampilan pada tampilan my_view_name tidak dapat ditemukan".

Saya menggunakan Tampilan 3 dan saya menentukan untuk menguji tampilan dengan tampilan id 'halaman'. (id tampilan default bukan "default" lagi)

Saya tahu bahwa saya harus melewati argumen display_id tetapi tidak bisa membuatnya berfungsi.

Ini adalah panggilan yang saya coba gunakan:

http://www.mywebsite.com/rest/views/my_view_name.json?display_id="page"
http://www.mywebsite.com/rest/views/my_view_name.json?display_id=page
http://www.mywebsite.com/rest/views/my_view_name.json?parameters[display_id]="page"
http://www.mywebsite.com/rest/views/my_view_name.json?args[display_id]="page"

Dalam definisi sumber daya untuk layanan, jelas display_id harus diteruskan sebagai argumen.

'args' => array(
  'view_name' => array(
    'name' => 'view_name',
    'type' => 'string',
    'description' => 'The name of the view to get.',
    'source' => array('path' => '0'),
    'optional' => FALSE,
  ),
  'display_id' => array(
    'name' => 'display_id',
    'type' => 'string',
    'description' => 'The display ID of the view to get.',
    'source' => 'param',
    'optional' => TRUE,
    'default value' => 'default',
  ),...

Adakah yang berhasil membuat karya ini?

Terima kasih.


Saya pikir tautan mywebsite.com/rest/views/my_view_name.json?display_id=page benar. Masalahnya adalah Anda tidak mendapatkan display_id yang benar. Silakan lihat di database dalam tabel views_display.
Batu Vo

Jawaban:


1

Pada halaman masalah Drupal.org untuk modul ini, seseorang menyarankan yang berikut untuk versi 7.x.

The arguments are passed in the usual url format, for example:
http://example.com/my_endpoint/views/view_name?display_id=default&args=123&offset=0&limit=10&return_type=FALSE

Multiple arguments can be used like this:
http://example.com/my_endpoint/views/view_name?display_id=default&args[0]=abc&args[1]=123&offset=0&limit=10&return_type=FALSE

Saya sudah mencoba menjalankan ini pada 6.x tetapi belum berhasil.


1

Jika Anda menginstal Firefox, atau Firebug, Anda dapat melihat sumber HTML untuk mendapatkan display_id. Lihat tangkapan layar ini (dan abaikan argumen halaman saya!):


1

Saya menghadapi masalah yang sama dengan services_views untuk meneruskan argumen ke tampilan yang disebut oleh permintaan layanan dan saya menyelesaikannya dengan menerapkan tambalan di modul tanpa itu tidak akan berhasil.

Ini patch yang berbeda dari proyek saya

diff --git a/sites/all/modules/services_views/services_views.moduleb/sites/all/modules/services_views/services_views.module
index 9ce8080..65dd92e 100755
--- a/sites/all/modules/services_views/services_views.module
+++ b/sites/all/modules/services_views/services_views.module
@@ -182,6 +182,10 @@ function services_views_views_plugins() {
 function services_views_services_request_preprocess_alter($controller, &$args, $options) {
   if (isset($controller['view info'])) {
     array_unshift($args, $controller['view info']);
+    $args[0]['args'] = array();
+     if (!empty($_GET['args'])) {
+       $args[0]['args'] = $_GET['args'];
+     }
   }
 }

diff --git a/sites/all/modules/services_views/services_views.resource.inc b/sites/all/modules/services_views/services_views.resource.inc
index eb9fbb4..aae2975 100755
--- a/sites/all/modules/services_views/services_views.resource.inc
+++ b/sites/all/modules/services_views/services_views.resource.inc
@@ -111,10 +111,11 @@ function services_views_execute_view($view_info, $view = NULL, $display_id = NUL
     $view_name = $view_info['view_name'];
     $display_id = $view_info['display_id'];

-    $args = array();
+    $args = $view_info['args'];

     $view = views_get_view($view_name);
     $view->set_arguments($args);
+    $view->execute_display($display_id, $args);
   }

Saya tidak ingat tautan ke tambalan tetapi itu mungkin membantu melihat masalah tampilan layanan

Jika Anda membuat tampilan layanan untuk tampilan Anda akan melihatnya sebagai sumber daya itu sendiri.masukkan deskripsi gambar di sini

Semoga itu bisa membantu


0

Peluang yang Anda inginkan display_id=page_1. The display_idparameter harus menjadi internal yang id layar. AFAIK tampilan default selalu memiliki id 'default'.

ID dari setiap tampilan halaman tambahan yang Anda buat tidak terlihat di UI Drupal 6, tetapi Anda dapat mengetahuinya dengan melakukan ekspor pada tampilan Anda dan melihat kode yang dihasilkan.

Setiap tampilan dibuat dengan panggilan ke $view->new_display()tempat parameter ketiga id (lihat views_db_object :: new_display ).

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.