hook_views_handlers没有被调用

时间:2012-02-18 09:15:36

标签: drupal drupal-7 drupal-views

我的hook_views_handlers()没有被调用。我已经尝试清除缓存,重新安装模块等...我已经添加了watchdog()调用以查看它是否被调用,而且它永远不会。

此字段公开计数器与计数器使用的相同类型的代码视图:

我可以将该字段添加到视图中,但是一旦我添加它,它就会显示为“Broken / Missing”

所有这3个文件都位于funwithviews模块目录的根目录中。这是相关代码。

有什么不合适的地方吗?

这存在于:funwithviews.module

/**
 * Implements hook_views_api().
 */
function funwithviews_views_api() {
  return array(
    'api' => 3.0
  );
}

这存在于:funwithviews.views.inc

/**
 * Implementation of hook_views_data()
 */
function funwithviews_views_data() {
  $data['fwv']['table']['group'] = t('FunSpace');
  $data['fwv']['table']['join'] = array(
    '#global' => array(),
  );
  $data['fwv']['counter'] = array(
    'title' => t('Fun counter'),
    'help' => t('This counter is more fun than the other one.'),
    'field' => array(
      'handler' => 'funwithviews_handler_field_fwv_counter',
    ),
  );
  return $data;
}

/**
 * Implements of hook_views_handlers().
 */
function funwithviews_views_handlers() {
  return array(
    'info' => array(
      'path' => drupal_get_path('module', 'funwithviews'),
    ),
    'handlers' => array(
      'funwithviews_handler_field_fwv_counter' => array(
        'parent' => 'views_handler_field',
      ),
    ),
  );
}

这存在于:funwithviews_handler_field_fwv_counter.inc

class funwithviews_handler_field_fwv_counter extends views_handler_field {

4 个答案:

答案 0 :(得分:3)

是的,您必须将其添加到您的信息文件中我认为正如观点本身所示: http://drupalcode.org/project/views.git/blob/refs/heads/7.x-3.x:/views.info

答案 1 :(得分:2)

我通过在.info文件中定义视图文件来实现这一目的。

files[] = funwithviews.views.inc
files[] = funwithviews_handler_field_fwv_counter.inc

hook_views_handlers()已不在视图中。

答案 2 :(得分:1)

  

files [] = funwithviews.views.inc
  files [] = funwithviews_handler_field_fwv_counter.inc

第一行不是必需的。只有第二个。在Drupal 7中,您可以仅在.info文件中包含文件 文件funwithviews.views.inc将自动包含在hook_views_api文件中的.module

答案 3 :(得分:0)

这是有用的,但是如果你把一个die('something');放在hook_handlers中就不会调用它。这是一种棘手的方式而且不是标准方式。

/**
* Implements of hook_views_handlers().
*/
function funwithviews_views_handlers() {
 die('something');
 return array(
 'info' => array(
  'path' => drupal_get_path('module', 'funwithviews'),
  ),
  'handlers' => array(
  'funwithviews_handler_field_fwv_counter' => array(
    'parent' => 'views_handler_field',
    ),
   ),
 );
}

也许是因为你的模块名称(以视图结尾),drupal hook解析器没有正确检测到它。 我确实遇到了这个问题。(我的模块名称以视图my_module结束)。