Làm thế nào để truy cập dịch vụ_view đúng cách?


11

Tôi đang cố gắng tìm nạp một số lượt xem với mô-đun services_view . Đáng buồn thay, tôi tiếp tục nhận được phản hồi: "404: Không tìm thấy: Không thể tìm thấy hiển thị trên my_view_name".

Tôi đang sử dụng Chế độ xem 3 và tôi đã xác định để kiểm tra chế độ xem với id hiển thị 'trang'. (id hiển thị mặc định không còn là "mặc định" nữa)

Tôi biết rằng tôi phải vượt qua đối số display_id nhưng đơn giản là không thể làm cho nó hoạt động.

Đây là các cuộc gọi tôi đang cố gắng sử dụng:

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"

Trong định nghĩa tài nguyên cho dịch vụ, rõ ràng display_id phải được truyền dưới dạng đối số.

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

Có ai quản lý để làm cho công việc này?

Cảm ơn bạn.


Tôi nghĩ rằng liên kết mywebsite.com/rest/view/my_view_name.json?display_id=page là chính xác. Vấn đề là bạn đã không nhận được display_id chính xác. Vui lòng xem trong cơ sở dữ liệu trong bảng view_display.
Đá Võ

Câu trả lời:


1

Trên trang vấn đề Drupal.org cho mô-đun này, ai đó gợi ý những điều sau cho phiên bả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

Tôi đã cố gắng để làm việc này trên 6.x nhưng chưa thành công.


1

Nếu bạn đã cài đặt Firefox hoặc Fireorms, bạn có thể xem nguồn HTML để lấy display_id. Xem ảnh chụp màn hình này (và vui lòng bỏ qua đối số trang của tôi!):


1

Tôi đã đối mặt với cùng một vấn đề với services_view để chuyển các đối số cho một khung nhìn được gọi bởi yêu cầu dịch vụ và tôi đã giải quyết nó bằng cách áp dụng một bản vá trong mô-đun mà không làm việc đó.

Đây là một bản vá khác nhau từ dự án của tôi

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

Tôi không nhớ liên kết đến bản vá nhưng điều đó có thể giúp xem các dịch vụ xem các vấn đề gây tranh cãi

Nếu bạn đã tạo một màn hình dịch vụ cho chế độ xem, bạn sẽ thấy nó là tài nguyên.nhập mô tả hình ảnh ở đây

Mong rằng sẽ giúp


0

Có thể bạn muốn display_id=page_1. Các display_idtham số phải là nội id của màn hình. AFAIK màn hình mặc định luôn có id 'mặc định'.

Id của bất kỳ trang bổ sung nào hiển thị mà bạn tạo không hiển thị trong Giao diện người dùng Drupal 6, nhưng bạn có thể tìm thấy chúng bằng cách xuất trên chế độ xem của bạn và xem mã kết quả.

Mỗi màn hình được tạo với một cuộc gọi đến $view->new_display()nơi tham số thứ ba là id (xem view_db_object :: new_display ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.