如何访问services_views的正确方法?


11

我正在尝试使用services_views模块获取一些视图。可悲的是,我不断收到响应:“ 404:找不到:在视图my_view_name上找不到显示”。

我正在使用Views 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

Answers:


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 --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“默认”。

您创建的任何其他页面显示的ID在Drupal 6 UI中都不可见,但是您可以通过在视图上进行导出并查看生成的代码来找到它们。

每个显示都是通过调用调用创建的, $view->new_display()其中第三个参数是id(请参见views_db_object :: new_display)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.