Services_views'e doğru şekilde nasıl erişilir?


11

Services_views modülü ile bazı görünümler getirmeye çalışıyorum . Ne yazık ki yanıt almaya devam ediyorum: "404: Bulunamadı: Görünümümde görüntü my_view_name bulunamadı".

Views 3 kullanıyorum ve bir 'page' display id ile bir görünümü test etmek için tanımladım. (varsayılan görüntü kimliği artık "varsayılan" değil)

Ben display_id argümanını geçmek zorunda biliyorum ama sadece çalıştıramazsınız.

İşte kullanmaya çalıştığım çağrılar:

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"

Hizmetin kaynak tanımında, display_id öğesinin bağımsız değişken olarak geçirilmesi gerektiği açıktır.

'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',
  ),...

Bu işi başarabilen var mı?

Teşekkür ederim.


Mywebsite.com/rest/views/my_view_name.json?display_id=page bağlantısının doğru olduğunu düşünüyorum . Sorun doğru display_id değerini almamanız. Lütfen veritabanına views_display tablosundan bakın.
Taş Vo

Yanıtlar:


1

Bu modülün Drupal.org sayı sayfasında , birisi 7.x sürümü için aşağıdakileri önerir.

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

Bunu 6.x üzerinde çalıştırmaya çalışıyordum ama henüz başaramadım.


1

Firefox veya Firebug yüklüyse display_id almak için HTML kaynağına bakabilirsiniz. Bu ekran görüntüsüne bakın (ve lütfen sayfa argümanımı görmezden gelin!):


1

Ben hizmetleri isteği tarafından çağrılan bir görünüme argümanlar geçirmek için services_views ile aynı sorunla karşı karşıya ve ben işe yaramazsa modülde bir yama uygulayarak çözdüm.

İşte projemden farklı bir yama

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);
   }

Düzeltme ekinin bağlantısını hatırlamıyorum ancak bu, hizmet görünümleriyle ilgili sorunları görmenize yardımcı olabilir

Görünüm için bir hizmet ekranı oluşturduysanız, bunu kendi başına bir kaynak olarak görürsünüz.resim açıklamasını buraya girin

umarım yardımcı olur


0

Şansını istiyorsun display_id=page_1. display_idParametre olmalıdır ekranın kimliği. AFAIK varsayılan ekranı her zaman 'varsayılan' kimliğine sahiptir.

Oluşturduğunuz herhangi bir ek sayfa görüntüsünün kimlikleri Drupal 6 kullanıcı arayüzünde görünmez, ancak görünümünüzde dışa aktarma yaparak ve ortaya çıkan koda bakarak bunları bulabilirsiniz.

Her ekran, $view->new_display()üçüncü parametrenin id olduğu bir çağrı ile oluşturulur (bkz. Views_db_object :: new_display ).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.