Come accedere a services_views nel modo corretto?


11

Sto cercando di recuperare alcune visualizzazioni con il modulo services_views . Purtroppo purtroppo continuo a ricevere la risposta: "404: non trovato: impossibile visualizzare il display my_view_name".

Sto usando Views 3 e ho definito per testare una view con un ID di visualizzazione 'page'. (l'id di visualizzazione predefinito non è più un "predefinito")

So che devo passare l'argomento display_id ma semplicemente non riesco a farlo funzionare.

Ecco le chiamate che sto cercando di usare:

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"

Nella definizione della risorsa per il servizio è chiaro che display_id deve essere passato come argomento.

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

C'è qualcuno che è riuscito a farlo funzionare?

Grazie.


Penso che il link mywebsite.com/rest/views/my_view_name.json?display_id=page sia corretto. Il problema è che non hai visualizzato display_id corretto. Cerca nel database nella tabella views_display.
Stone Vo,

Risposte:


1

Sulla pagina di un problema di Drupal.org per questo modulo, qualcuno suggerisce quanto segue per la versione 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

Ho provato a farlo funzionare su 6.x ma non ci sono ancora riuscito.


1

Se hai Firefox installato o Firebug puoi guardare l'origine HTML per ottenere display_id. Guarda questa schermata (e per favore ignora l'argomento della mia pagina!):


1

Ho riscontrato lo stesso problema con services_views per passare argomenti a una vista chiamata dalla richiesta di servizi e l'ho risolto applicando una patch nel modulo senza che non funzionasse.

Ecco una patch diff dal mio progetto

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

Non ricordo il collegamento alla patch, ma ciò può aiutare a vedere i problemi relativi alle visualizzazioni dei servizi

Se creassi un servizio di visualizzazione per la vista, lo vedresti come una risorsa autonoma.inserisci qui la descrizione dell'immagine

Spero possa aiutare


0

È probabile che tu voglia display_id=page_1. Il display_idparametro deve essere l' id interno del display. AFAIK il display predefinito ha sempre l'id 'default'.

Gli ID di qualsiasi altra pagina visualizzata che crei non sono visibili nell'interfaccia utente di Drupal 6, ma puoi scoprirli facendo un'esportazione nella tua vista e guardando il codice risultante.

Ogni display viene creato con una chiamata in $view->new_display()cui il terzo parametro è l'id (vedere views_db_object :: new_display ).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.