Drupal 7 Views 3 致命错误:无法访问受保护的属性 SelectQuery::$where

Posted

技术标签:

【中文标题】Drupal 7 Views 3 致命错误:无法访问受保护的属性 SelectQuery::$where【英文标题】:Drupal 7 Views 3 Fatal error: Cannot access protected property SelectQuery::$where 【发布时间】:2011-11-15 03:55:12 【问题描述】:

我在尝试修改 Drupal 7 Views 3 过滤器中的值时收到此错误:

Fatal error: Cannot access protected property SelectQuery::$where in /Users/joe/Sites/sdgea/docroot/sites/all/modules/custom/sdge_video/sdge_video.module on line 275

这是导致此问题的代码:

function modulename_views_pre_execute(&$view) 
  if (is_numeric($term_no)) 
        // set the filter
    $view->filter['tid']->value[$term_no] = $term_no;
        // set the query
        $view->query->where[0]['conditions'][2]['value'] = $term_no;
        // set the build info
        $view->build_info['query']->where->conditions[0]['field']->conditions[0]['field']->conditions[2]['value'] = $term_no;
        //$view->build_info['query']->where->conditions[0]['field']->conditions[0]['field']->conditions[2]['value'] = $term_no; // <-- This line specifically is causing fatality.
  

可能是 D7 中某个超人物体 yada yada 的一部分。任何人都对我如何在视图 3 视图 (D7) 中修改过滤器的值有任何想法。

此外,还要求回答为什么会发生对“受保护财产”的访问。我是一名编码员。我不想保护任何东西!

提前致谢!

【问题讨论】:

【参考方案1】:

可能有点晚了,但您可以使用 hook_views_query_alter 对其进行修改,这正是为此目的,如下所示:

function modulename_views_query_alter(&$views,&$query)
    //...rest of the code
    $query->where[0]['conditions'][2]['value'] = $term_no;

【讨论】:

以上是关于Drupal 7 Views 3 致命错误:无法访问受保护的属性 SelectQuery::$where的主要内容,如果未能解决你的问题,请参考以下文章

Drupal - 致命错误sessionhandler

在 Drupal 7/Views 3 中创建相似节点列表

Drupal 7 Views 3:搜索特定字段的公开过滤器

致命:无法访问“H:\/.config/git/config”:参数无效 [Windows 7 上的 Git]

Drupal 7 Views 3:显示显示节点的数量?示例:(显示 5382 个结果中的 3842 个)

Drupal 7:视图 3:仅显示当前用户的个人资料信息