Tôi đã viết mô-đun để giao diện với Chế độ xem 3 bằng Drupal 7, nhưng khi tôi tạo chế độ xem sử dụng bảng tùy chỉnh làm nguồn dữ liệu, không có dữ liệu nào hiển thị. Dưới đây là sơ đồ của tôi từ MySQL:Drupal 7 - xem tùy chỉnh với bảng tùy chỉnh, không có dữ liệu nào hiển thị
+-------------+------------+------+-----+---------+----------------+
| 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 | |
+-------------+------------+------+-----+---------+----------------+
Và đây là ghi đè móc trong 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;
}
Có một cái gì đó trông sai với bản đồ của tôi? Khi tôi tạo Chế độ xem, tôi đang thử một Danh sách chưa được định dạng đơn giản và chỉ hiển thị từng trường có nhãn. Trường duy nhất hiển thị với dữ liệu là id
và tất cả các giá trị id
từ bảng của tôi đều có ở đó. Tôi đã thử thêm Bộ lọc vào Chế độ xem để Bộ môn học! = trống và Tên khóa học! = trống, không loại bỏ bất kỳ kết quả nào (dựa trên số id
s được hiển thị). Dưới đây là các truy vấn xem được tạo ra:
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 '\\')))
Khi tôi chạy này trong phpMyAdmin, chỉ cần loại bỏ các {
và }
từ khắp nơi trên My_Awesome_Table
, nó sẽ trả về kết quả và có dữ liệu trong mỗi cột.
Chỉnh sửa: có thể có liên quan để nói rằng tôi đã tạo mô-đun Xem tùy chỉnh khác cho một bảng khác trong cùng cơ sở dữ liệu và hoạt động tốt. Tôi đã sử dụng mô-đun đó như là một cơ sở cho thế này, thay đổi tên mô-đun, tiền tố chức năng, vv
Tôi biết điều này có thể hiển nhiên, nhưng bất cứ khi nào tôi gặp vấn đề như vậy thì thường là do tên 'my_module' bị viết sai. – kylex
Thử hỏi @ http://drupal.stackexchange.com/ – Strae