Como acessar services_views da maneira correta?


11

Estou tentando buscar algumas visualizações com o módulo services_views . Infelizmente, continuo recebendo a resposta: "404: Não encontrado: a exibição na exibição my_view_name não foi encontrada".

Estou usando as Visualizações 3 e defini para testar uma exibição com um ID de exibição de 'página'. (o ID de exibição padrão não é mais "padrão")

Eu sei que tenho que passar o argumento display_id, mas simplesmente não consigo fazê-lo funcionar.

Aqui estão as chamadas que estou tentando 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"

Na definição de recurso para o serviço, é claro que display_id deve ser passado 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',
  ),...

Existe alguém que conseguiu fazer isso funcionar?

Obrigado.


Acho que o link mywebsite.com/rest/views/my_view_name.json?display_id=page está correto. O problema é que você não obteve o display_id correto. Por favor, olhe no banco de dados na tabela views_display.
Pedra Vo

Respostas:


1

Na página do Drupal.org deste módulo, alguém sugere o seguinte para a versão 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

Eu tenho tentado fazer isso funcionar no 6.x, mas ainda não consegui.


1

Se você possui o Firefox instalado ou o Firebug, pode consultar a fonte HTML para obter o display_id. Veja esta captura de tela (e ignore o argumento da minha página!):


1

Enfrentei o mesmo problema com services_views para passar argumentos para uma exibição chamada por solicitação de serviços e resolvi-o aplicando um patch no módulo sem que ele não funcionasse.

Aqui está um patch diff do meu projeto

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

Não me lembro do link para o patch, mas isso pode ajudar a ver os serviços exibem problemas de argumentos

Se você criou uma exibição de serviço para a visualização, ela seria vista como um recurso.insira a descrição da imagem aqui

espero que ajude


0

Provavelmente, você quer display_id=page_1. O display_idparâmetro deve ser o ID interno do display. AFAIK, a exibição padrão sempre tem o ID 'padrão'.

Os IDs de qualquer página adicional exibida que você criar não são visíveis na interface do usuário do Drupal 6, mas você pode descobri-los fazendo uma exportação na sua exibição e observando o código resultante.

Cada exibição é criada com uma chamada para $view->new_display()onde o terceiro parâmetro é o ID (consulte views_db_object :: new_display ).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.