Wie greife ich richtig auf services_views zu?

11

Ich versuche, einige Ansichten mit dem Modul services_views abzurufen . Leider erhalte ich immer wieder die Antwort: "404: Nicht gefunden: Anzeige in Ansicht my_view_name konnte nicht gefunden werden".

Ich verwende Ansichten 3 und habe zum Testen eine Ansicht mit einer 'Seiten'-Anzeige-ID definiert. (Standardanzeige-ID ist keine "Standard" mehr)

Ich weiß, dass ich das Argument display_id übergeben muss, aber es kann einfach nicht funktionieren.

Hier sind die Anrufe, die ich verwenden möchte:

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"

In der Ressourcendefinition für den Service ist klar, dass display_id als Argument übergeben werden muss.

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

Gibt es jemanden, der es geschafft hat, diese Arbeit zu machen?

Vielen Dank.

cmos
quelle
Ich denke, der Link mywebsite.com/rest/views/my_view_name.json?display_id=page ist korrekt. Das Problem ist, dass Sie nicht die richtige display_id erhalten haben. Bitte schauen Sie in der Datenbank in der Tabelle views_display nach.
Stone Vo

Antworten:

1

Auf einer Drupal.org- Problemseite für dieses Modul schlägt jemand Folgendes für die 7.x-Version vor.

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

Ich habe versucht, dies auf 6.x zum Laufen zu bringen, aber es ist mir noch nicht gelungen.

ted.strauss
quelle
1

Wenn Sie Firefox oder Firebug installiert haben, können Sie in der HTML-Quelle die display_id abrufen. Sehen Sie sich diesen Screenshot an (und ignorieren Sie bitte mein Seitenargument!):

MD3
quelle
1

Ich hatte das gleiche Problem mit services_views, um Argumente an eine Ansicht zu übergeben, die von services request aufgerufen wurde, und ich habe es gelöst, indem ich einen Patch im Modul angewendet habe, ohne dass dies nicht funktioniert.

Hier ist ein Diff-Patch aus meinem Projekt

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

Ich erinnere mich nicht an den Link zum Patch, aber das kann helfen, Probleme mit den Ansichten der Dienste anzuzeigen

Wenn Sie eine Serviceanzeige für die Ansicht erstellt haben, wird diese als Ressource selbst angezeigt.Geben Sie hier die Bildbeschreibung ein

Ich hoffe, das hilft

Mohammed Gomma
quelle
0

Die Chancen stehen gut, dass Sie wollen display_id=page_1. Der display_idParameter muss die interne ID der Anzeige sein. AFAIK Die Standardanzeige hat immer die ID 'Standard'.

Die IDs aller zusätzlichen Seitenanzeigen, die Sie erstellen, sind in der Drupal 6-Benutzeroberfläche nicht sichtbar. Sie können sie jedoch herausfinden, indem Sie Ihre Ansicht exportieren und den resultierenden Code anzeigen.

Jede Anzeige wird mit einem Aufruf erstellt, $view->new_display()bei dem der dritte Parameter die ID ist (siehe views_db_object :: new_display ).

dave888
quelle