Jak uzyskać dostęp do services_views we właściwy sposób?

11

Próbuję pobrać niektóre widoki za pomocą modułu services_views . Niestety, ciągle otrzymuję odpowiedź: „404: Nie znaleziono: Wyświetlenie w widoku moja_nazwa_widoku nie zostało znalezione”.

Korzystam z widoków 3 i zdefiniowałem do testowania widoku z identyfikatorem wyświetlania „strony”. (domyślny identyfikator wyświetlania nie jest już „domyślny”)

Wiem, że muszę przekazać argument display_id, ale po prostu nie mogę go uruchomić.

Oto połączenia, których próbuję użyć:

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"

W definicji zasobu dla usługi jest oczywiste, że parametr display_id należy przekazać jako argument.

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

Czy jest ktoś, kto zdołał sprawić, by to zadziałało?

Dziękuję Ci.

cmos
źródło
Myślę, że link mywebsite.com/rest/views/my_view_name.json?display_id=page jest poprawny. Problem polega na tym, że nie otrzymałeś poprawnego identyfikatora display_id. Proszę zajrzeć do bazy danych w tabeli views_display.
Stone Vo

Odpowiedzi:

1

Na stronie wydania Drupal.org dla tego modułu ktoś sugeruje, co następuje w przypadku wersji 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

Próbowałem uruchomić to w wersji 6.x, ale jeszcze się nie udało.

ted.strauss
źródło
1

Jeśli masz zainstalowany Firefox lub Firebug, możesz spojrzeć na źródło HTML, aby uzyskać display_id. Zobacz ten zrzut ekranu (i proszę zignoruj ​​mój argument strony!):

MD3
źródło
1

Napotkałem ten sam problem z service_views, aby przekazać argumenty do widoku wywoływanego przez żądanie usług i rozwiązałem go, stosując łatkę w module bez tego, że nie zadziała.

Oto łatka różnicowa z mojego projektu

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

Nie pamiętam linku do łaty, ale może to pomóc zobaczyć problemy z widokami usług

Jeśli utworzyłeś wyświetlacz usługi dla tego widoku, zobaczyłbyś go jako zasób, który on sam.wprowadź opis zdjęcia tutaj

Mam nadzieję, że to pomaga

Mohammed Gomma
źródło
0

Szanse są chcesz display_id=page_1. display_idParametr musi być wewnętrzny id wyświetlacza. AFAIK domyślny wyświetlacz zawsze ma identyfikator „default”.

Identyfikatory wszelkich dodatkowych wyświetlanych stron nie są widoczne w interfejsie użytkownika Drupal 6, ale możesz je znaleźć, eksportując widok i patrząc na wynikowy kod.

Każdy ekran jest tworzony za pomocą wywołania, w $view->new_display()którym trzecim parametrem jest identyfikator (patrz views_db_object :: new_display ).

dave888
źródło