Подтвердить что ты не робот

Drupal 7 - пользовательский вид с пользовательской таблицей, данные не отображаются

Я написал модуль для взаимодействия с представлениями 3 с помощью Drupal 7, но когда я создаю представление с использованием моей настраиваемой таблицы в качестве источника данных, данные не отображаются. Вот моя схема из MySQL:

+-------------+------------+------+-----+---------+----------------+
| Field       | Type       | Null | Key | Default | Extra          |
+-------------+------------+------+-----+---------+----------------+
| id          | int(11)    | NO   | PRI | NULL    | auto_increment |
| title       | mediumtext | NO   |     | NULL    |                |
| Department  | text       | NO   |     | NULL    |                |
| credits     | int(10)    | NO   |     | NULL    |                |
| description | longtext   | NO   |     | NULL    |                |
+-------------+------------+------+-----+---------+----------------+

И здесь перехват крюка в my_module.views.inc:

function my_module_views_data() {
  $tableName = 'My_Awesome_Table';
  $data = array();
  $data[$tableName]['table']['group'] = t('Courses');

  $data[$tableName]['table']['base'] = array(
    'field' => 'id', 
    'title' => t('Courses'), 
    'help' => t("Contains courses, departments, and descriptions.")
  );

  $data[$tableName]['title'] = array(
    'title' => t('Course name'), 
    'help' => t('Course name'), 
    'field' => array(
      'handler' => 'views_handler_field', 
      'click sortable' => TRUE,
    ), 
    'sort' => array(
      'handler' => 'views_handler_sort',
    ), 
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ), 
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  $data[$tableName]['Department'] = array(
    'title' => t('Course department'), 
    'help' => t('Course department'), 
    'field' => array(
      'handler' => 'views_handler_field', 
      'click sortable' => TRUE,
    ), 
    'sort' => array(
      'handler' => 'views_handler_sort',
    ), 
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ), 
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  $data[$tableName]['credits'] = array(
    'title' => t('Credits'), 
    'help' => t('Number of credit hours'), 
    'field' => array(
      'handler' => 'views_handler_field', 
      'click sortable' => TRUE,
    ),
    'argument' => array('handler' => 'views_handler_argument_numeric'),
    'filter' => array('handler' => 'views_handler_filter_numeric'),
    'sort' => array('handler' => 'views_handler_sort_numeric')
  );

  $data[$tableName]['description'] = array(
    'title' => t('Course description'), 
    'help' => t('Course description'), 
    'field' => array(
      'handler' => 'views_handler_field', 
      'click sortable' => TRUE,
    ), 
    'sort' => array(
      'handler' => 'views_handler_sort',
    ), 
    'filter' => array(
      'handler' => 'views_handler_filter_string',
    ), 
    'argument' => array(
      'handler' => 'views_handler_argument_string',
    ),
  );

  $data[$tableName]['id'] = array(
    'title' => t('Unique identifier'),
    'help' => t('Primary key for table'),
    'field' => array('handler' => 'views_handler_field'),
    'argument' => array('handler' => 'views_handler_argument_numeric'),
    'filter' => array('handler' => 'views_handler_filter_numeric'),
    'sort' => array('handler' => 'views_handler_sort_numeric'));

  return $data;
}

Что-то не так с моим сопоставлением? Когда я создаю представление, я пытаюсь создать простой Unformatted List и просто показывать каждое поле с меткой. Единственное поле, которое отображается с данными, это id, и все значения id из моей таблицы есть. Я попробовал добавить фильтр в представление, чтобы отдел курса!= Пустое и название курса!= Пустое, что не устранило никаких результатов (на основе показанного id). Здесь генерируется запрос Views:

SELECT My_Awesome_Table.title AS My_Awesome_Table_title,
  My_Awesome_Table.Department AS My_Awesome_Table_Department,
  My_Awesome_Table.description AS My_Awesome_Table_description,
  My_Awesome_Table.credits AS My_Awesome_Table_credits,
  My_Awesome_Table.id AS id
FROM {My_Awesome_Table} My_Awesome_Table
WHERE (( (My_Awesome_Table.Department NOT LIKE '' ESCAPE '\\') AND
  (My_Awesome_Table.title NOT LIKE '' ESCAPE '\\') ))

Когда я запускаю это в phpMyAdmin, просто удаляя { и } из My_Awesome_Table, он возвращает результаты и в каждом столбце есть данные.

Изменить:, возможно, имеет смысл сказать, что я создал другой пользовательский модуль View для другой таблицы в той же базе данных, и он отлично работает. Я использовал этот модуль в качестве базы для этого, изменив имя модуля, префиксы функций и т.д.

4b9b3361

Ответ 1

Очистить кеш, отключить модуль "my_module", сохранить, затем включить его, сохранить

В моем развитии я должен добавить этот крючок, чтобы он работал

function my_module_views_api() {
    return array('api'=>2.0);
}