Comment accéder aux services_views de la bonne façon?

11

J'essaie de récupérer des vues avec le module services_views . Malheureusement, je reçois toujours la réponse: "404: Introuvable: L'affichage sur la vue my_view_name est introuvable".

J'utilise Views 3 et j'ai défini pour tester une vue avec un identifiant d'affichage de «page». (l'ID d'affichage par défaut n'est plus un "défaut")

Je sais que je dois passer l'argument display_id mais ne peux tout simplement pas le faire fonctionner.

Voici les appels que j'essaie d'utiliser:

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"

Dans la définition de ressource pour le service, il est clair que display_id doit être passé en 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',
  ),...

Y a-t-il quelqu'un qui a réussi à faire fonctionner ça?

Je vous remercie.

cmos
la source
Je pense que le lien mywebsite.com/rest/views/my_view_name.json?display_id=page est correct. Le problème est que vous n'avez pas obtenu le bon display_id. Veuillez regarder dans la base de données dans la table views_display.
Stone Vo

Réponses:

1

Sur une page de problème Drupal.org pour ce module, quelqu'un suggère ce qui suit pour la version 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

J'ai essayé de faire fonctionner cela sur 6.x mais je n'ai pas encore réussi.

ted.strauss
la source
1

Si vous avez installé Firefox ou Firebug, vous pouvez regarder la source HTML pour obtenir le display_id. Voir cette capture d'écran (et veuillez ignorer mon argument de page!):

MD3
la source
1

J'ai rencontré le même problème avec services_views pour passer des arguments à une vue appelée par la demande de services et je l'ai résolu en appliquant un correctif dans le module sans que cela ne fonctionne pas.

Voici un patch diff de mon projet

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

Je ne me souviens pas du lien vers le correctif, mais cela peut aider à voir les vues des services sur les problèmes d'arguments

Si vous créiez un affichage de service pour la vue, vous le verriez comme une ressource elle-même.entrez la description de l'image ici

J'espère que cela pourra aider

Mohammed Gomma
la source
0

Les chances sont que vous voulez display_id=page_1. Le display_idparamètre doit être l' identifiant interne de l'affichage. AFAIK l'affichage par défaut a toujours l'identifiant «par défaut».

Les identifiants de toute page supplémentaire que vous créez ne sont pas visibles dans l'interface utilisateur de Drupal 6, mais vous pouvez les trouver en effectuant une exportation sur votre vue et en consultant le code résultant.

Chaque affichage est créé avec un appel à l' $view->new_display()endroit où le troisième paramètre est l'id (voir views_db_object :: new_display ).

dave888
la source