hook_views_handlers не вызывается - PullRequest
       6

hook_views_handlers не вызывается

2 голосов
/ 18 февраля 2012

Мой hook_views_handlers () не вызывается.Я попытался очистить кеш, переустановить модуль и т. Д. Я добавил вызовы watchdog (), чтобы узнать, вызывается ли он, и никогда не выполняется.

В этом поле отображается счетчик сСчетчик представлений кода того же типа использует:

Я могу добавить поле в представление, но как только я добавлю его, оно просто будет отображаться как «Сломано / отсутствует»

Все 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 ]

3 голосов
/ 18 февраля 2012

Да, вы должны добавить его в свой информационный файл, как мне кажется, как показывает само представление: http://drupalcode.org/project/views.git/blob/refs/heads/7.x-3.x:/views.info

2 голосов
/ 18 февраля 2012

Я получил эту работу, определив файлы представлений в моем файле .info.

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

hook_views_handlers () больше не отображается в Views.

1 голос
/ 27 января 2016

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

Первая строка не обязательна.Только второе.В Drupal 7 Вы можете включать файлы в файл .info только вместе с Class.
Файл funwithviews.views.inc будет автоматически включен через hook_views_api в Ваш файл .module.

0 голосов
/ 23 июля 2012

Это работа, но если вы поместите die('something'); в обработчики hook_handler, это не называется. Это хитрый способ и не стандартный способ.

/**
* 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).

...