services_views에 올바른 방법으로 액세스하는 방법은 무엇입니까?


11

services_views 모듈로 일부 뷰를 가져 오려고 합니다. 안타깝게도 "404 : 찾을 수 없음 :보기에서 my_view_name을 찾을 수 없습니다"라는 응답이 계속 표시됩니다.

뷰 3을 사용 하고 있으며 '페이지'표시 ID로 뷰를 테스트하도록 정의했습니다. (기본 표시 ID는 더 이상 "기본"이 아닙니다)

나는 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 테이블의 데이터베이스를 확인하십시오.
Stone Vo

답변:


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

services_views와 같은 문제에 직면하여 서비스 요청에 의해 호출 된보기에 인수를 전달하고 작동하지 않는 모듈에 패치를 적용하여 해결했습니다.

내 프로젝트의 diff 패치가 있습니다.

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

패치 링크를 기억하지 못하지만 서비스 뷰 args 문제를 보는 데 도움이 될 수 있습니다

보기에 대한 서비스 표시를 작성한 경우 자체 표시되는 자원으로 표시됩니다.여기에 이미지 설명을 입력하십시오

희망이 도움이


0

당신이 원하는 기회 display_id=page_1. display_id파라미터는 있어야 내부 디스플레이 ID. AFAIK 기본 디스플레이의 ID는 항상 'default'입니다.

생성 한 추가 페이지 디스플레이의 id는 Drupal 6 UI에 표시되지 않지만 뷰에서 내보내기를 수행하고 결과 코드를 보면 확인할 수 있습니다.

각 표시는 $view->new_display()세 번째 매개 변수가 id 인 views를 호출하여 작성됩니다 ( views_db_object :: new_display 참조 ).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.