วิธีเข้าถึง services_views วิธีที่ถูกต้อง?


11

ฉันพยายามดึงมุมมองบางอย่างด้วยโมดูลservices_views น่าเสียดายที่ฉันได้รับการตอบกลับอย่างต่อเนื่อง: "404: ไม่พบ: แสดงในมุมมอง my_view_name ไม่พบ"

ฉันใช้Views 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
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

ฉันประสบปัญหาเดียวกันกับ 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);
   }

ฉันจำการเชื่อมโยงไปยังโปรแกรมแก้ไขไม่ได้ แต่นั่นอาจช่วยให้การดูบริการมีปัญหา

หากคุณสร้างบริการที่แสดงสำหรับมุมมองคุณจะเห็นว่ามันเป็นทรัพยากรที่ตนเองป้อนคำอธิบายรูปภาพที่นี่

หวังว่าจะช่วย


0

display_id=page_1โอกาสที่คุณต้องการ display_idพารามิเตอร์จะต้องเป็นภายใน ID ของจอแสดงผล AFAIK จอแสดงผลเริ่มต้นมักมี id 'default'

id ของหน้าเพิ่มเติมใด ๆ ที่คุณสร้างจะไม่ปรากฏใน Drupal 6 UI แต่คุณสามารถค้นหาได้โดยทำการส่งออกในมุมมองของคุณและดูรหัสผลลัพธ์

แต่ละจอแสดงผลถูกสร้างขึ้นด้วยการเรียกไป $view->new_display()ที่พารามิเตอร์ที่สามคือ id (ดูviews_db_object :: new_display )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.