¿Cómo acceder a services_views de la manera correcta?

11

Estoy tratando de obtener algunas vistas con el módulo services_views . Lamentablemente, sigo recibiendo la respuesta: "404: No encontrado: no se pudo ver la vista de mi_nombre_vista".

Estoy usando Vistas 3 y definí para probar una vista con una identificación de pantalla 'página'. (la ID de pantalla predeterminada ya no es una "predeterminada")

Sé que tengo que pasar el argumento display_id pero simplemente no puedo hacer que funcione.

Aquí están las llamadas que estoy tratando de usar:

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"

En la definición de recursos para el servicio, está claro que display_id debe pasarse como argumento.

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

¿Hay alguien que logró hacer que esto funcione?

Gracias.

CMOS
fuente
Creo que el enlace mywebsite.com/rest/views/my_view_name.json?display_id=page es el correcto. El problema es que no obtuvo el display_id correcto. Busque en la base de datos en la tabla views_display.
Stone Vo

Respuestas:

1

En una página de edición de Drupal.org para este módulo, alguien sugiere lo siguiente para la versión 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

He estado tratando de hacer que esto funcione en 6.x pero aún no lo he logrado.

ted.strauss
fuente
1

Si tiene instalado Firefox o Firebug, puede mirar la fuente HTML para obtener el display_id. Vea esta captura de pantalla (¡e ignore el argumento de mi página!):

MD3
fuente
1

Enfrenté el mismo problema con services_views para pasar argumentos a una vista llamada por solicitud de servicios y lo resolví aplicando un parche en el módulo sin que no funcione.

Aquí hay un parche de diferencias de mi proyecto

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

No recuerdo el enlace al parche, pero eso puede ayudar a ver los problemas de las vistas de los servicios.

Si creó una pantalla de servicio para la vista, la vería como un recurso en sí mismo.ingrese la descripción de la imagen aquí

Espero que ayude

Mohammed Gomma
fuente
0

Lo más probable es que quieras display_id=page_1. El display_idparámetro debe ser la identificación interna de la pantalla. AFAIK la pantalla predeterminada siempre tiene id 'default'.

Las identificaciones de las pantallas de página adicionales que cree no están visibles en la interfaz de usuario de Drupal 6, pero puede encontrarlas haciendo una exportación en su vista y mirando el código resultante.

Cada pantalla se crea con una llamada a $view->new_display()donde el tercer parámetro es el id (ver views_db_object :: new_display ).

dave888
fuente