Здравствуйте
реализую таблицу из БД Mysql. Делал по примеру xandeax-а,
http://xandeadx.ru/blog/drupal/352
потом через views все отобразилось
сейчас попробовал по аналогии создать свою таблицу:
.install
не отображается даже в ..admin/structure/
<?php
/**
* Реализация hook_schema()
*/
function staffs_schema() {
$schema['staffs'] = array(
'description' => 'Отдел Кадров',
'fields' => array(
'hid' => array(
'description' => 'Персональный ID сотрудника',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'name' => array(
'description' => 'Фамилия и инициалы сотрудника',
'type' => 'varchar',
'length' => '100',
'not null' => TRUE,
),
'post' => array(
'description' => 'Должность сотрудника',
'type' => 'varchar',
'length' => '100',
'not null' => TRUE,
),
'rank' => array(
'description' => 'Квалификация сотрудника',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
'exp' => array(
'description' => 'Стаж сотрудника',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
'salary' => array(
'description' => 'Зарплата сотрудника',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
),
'primary key' => array('hid'),
);
return
$schema;
}
?>
<?php
/**
* Реализация hook_entity_info()
*/
function staff_entity_info() {
return array(
'staff' => array( // Системное имя сущности
'label' => t('StaffManager'), // Человеко-понятное имя сущности
'entity class' => 'Entity', // Класс сущности
'controller class' => 'EntityAPIController', // Контроллер сущности
'base table' => 'staffs', // Таблица, в которой хранится информация о сотрудниках
'entity keys' => array(
'id' => 'hid', // Название поля, в котором распологаются идентификаторы альбомов
'label' => 'name' // Название поля, в котором распологаются ФИО сотрудника
),
'admin ui' => array(
'path' => 'admin/structure/staffs' // Путь, по которому будет доступна админка
),
'fieldable' => true, // добавили эту строку
'bundles' => array( // ...и этот массив
'staff' => array(
'label' => t('staff'),
'admin' => array(
'path' => 'admin/structure/staffs',
'access arguments' => array('administer site configuration'),
),
),
),
'access callback' => 'staff_access', // Имя функции, отвечающей за проверку прав доступа
'module' => 'staff',
),
);
}
/**
* Проверка прав доступа
*/
function staff_access($op, $entity, $account = NULL, $entity_type = 'staff') {
return user_access('administer site configuration'); // сущность будет доступна только администратору сайта
}
/**
* Возвращает альбом по его идентификатору
*/
function staff_load($hid) {
$result = entity_load('staff', array($hid));
return $result ? reset($result) : FALSE;
}
/**
* Форма создания/редактирования альбома
*/
function staff_form($form, &$form_state, $staff, $op = 'edit') {
$form['name'] = array(
'#title' => 'ФИО',
'#description' => 'Фамилия и инициалы сотрудника',
'#type' => 'textfield',
'#default_value' => isset($staff->name) ? $staff->name : '',
'#required' => true,
);
$form['post'] = array(
'#name' => 'Должность',
'#title' => 'Должность сотрудника',
'#type' => 'textfield',
'#default_value' => isset($staff->post) ? $staff->post : '',
'#required' => true,
);
$form['rank'] = array(
'#title' => 'Квалификация',
'#description' => 'Квалификация сотрудника',
'#type' => 'textfield',/**/
'#default_value' => isset($staff->rank) ? $staff->rank : '',
'#required' => true,
'#size' => 5,
);
$form['exp'] = array(
'#title' => 'Стаж',
'#description' => 'Стаж сотрудника',
'#type' => 'textfield',/**/
'#default_value' => isset($staff->exp) ? $staff->exp : '',
'#required' => true,
'#size' => 5,
);
$form['salary'] = array(
'#title' => 'Зарплата',
'#description' => 'Зарплата сотрудника',
'#type' => 'textfield',/**/
'#default_value' => isset($staff->salary) ? $staff->salary : '',
'#required' => true,
'#size' => 5,
);
$form['actions']['submit'] = array(
'#type' => 'actions',
);
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => 'Сохранить',
);
return $form;
}
/**
* Background entity form submit callback
*/
function staff_form_submit(&$form, &$form_state) {
$staff = entity_ui_form_submit_build_entity($form, $form_state);
$staff->save();
$form_state['redirect'] = 'admin/structure/staffs';
}
/**
* Реализация hook_menu()
*/
function staff_menu() {
$items['admin/structure/staffs/list'] = array(
'title' => 'List',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
return $items;
}
/**
* Реализация hook_field_extra_fields().
*/
function staff_field_extra_fields() {
$return = array();
$return['staff']['staff'] = array(
'form' => array(
'name' => array(
'label' => t('ФИО'),
'description' => t('ФИО сотрудника'),
'weight' => -10,
),
'post' => array(
'label' => t('Должность'),
'description' => t('ФИО сотрудника'),
'weight' => -10,
),
'rank' => array(
'label' => t('Квалификация'),
'description' => t('Квалификация сотрудника'),
'weight' => -10,
),
'exp' => array(
'label' => t('Стаж'),
'description' => t ('Стаж сотрудника'),
'weight' => -10,
),
'salary' => array(
'label' => t('Зарплата'),
'description' => t('Зарплата сотрудника'),
'weight' => -10,
),
),
);
return $return;
}
?>
Комментарии
http://xandeadx.ru/blog/drupal/352
делал вот по этому примеру
По совету xandeaxa сбросил cache.
работает форма, но сбрасывается
Не подскажете как сделать несколько взаимосвязанных сущностей, отображающихся во views? Несколько сущностей создал и все действия с ними доступны. А во views получается вывести только одну, связанные не выводятся в зависимостях views.