Як правильно отримати доступ до services_views?


11

Я намагаюся отримати деякі погляди за допомогою модуля services_views . На жаль, я продовжую отримувати відповідь: "404: Не знайдено: відображення в режимі перегляду my_view_name не вдалося знайти".

Я використовую перегляди 3, і я визначив для тестування подання з ідентифікатором "сторінка". (стандартний ідентифікатор відображення більше не є "за замовчуванням")

Я знаю, що я повинен передавати аргумент display_id, але просто не можу змусити його працювати.

Ось дзвінки, які я намагаюся використовувати:

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"

З визначення ресурсу для послуги зрозуміло, що display_id повинен бути переданий як аргумент.

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

Чи є хтось, кому вдалося зробити цю роботу?

Дякую.


Я думаю, що посилання mywebsite.com/rest/views/my_view_name.json?display_id=page є правильним. Проблема в тому, що ви не отримали правильний display_id. Будь ласка, подивіться в базу даних у таблиці views_display.
Стоун Во

Відповіді:


1

На сторінці випуску Drupal.org для цього модуля хтось пропонує наступне для версії 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

Я намагався зробити це на 6.x, але поки не досяг успіху.


1

Якщо у вас встановлений Firefox або Firebug, ви можете подивитися джерело HTML, щоб отримати display_id. Дивіться цей знімок екрана (і проігноруйте мій аргумент сторінки!):


1

Я зіткнувся з тією ж проблемою, що і служб_views, щоб передати аргументи до подання, викликаного запитом служби, і я вирішив це, застосувавши патч у модулі, без цього він не працюватиме.

Ось відмітка від мого проекту

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

Я не пам’ятаю посилання на виправлення, але це може допомогти побачити проблеми перегляду аргументів

Якщо ви створили сервісний дисплей для представлення даних, ви побачили б його як ресурс, який я є самостійним.введіть тут опис зображення

Сподіваюся, що це допомагає


0

Швидше за все, ви хочете display_id=page_1. display_idПараметр повинен бути внутрішній ідентифікатор дисплея. AFAIK на дисплеї за замовчуванням завжди є ідентифікатор 'default'.

Ідентифікатори будь-яких додаткових відображених сторінок, які ви створюєте, не відображаються в інтерфейсі Drupal 6, але ви можете їх дізнатися, здійснивши експорт на свій погляд і переглянувши отриманий код.

Кожен дисплей створюється з викликом, $view->new_display()де третім параметром є ідентифікатор (див. Views_db_object :: new_display ).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.