Работа с БД Mysql через Entity

Главные вкладки

Аватар пользователя corjeque corjeque 3 апреля 2012 в 1:41

Здравствуйте

реализую таблицу из БД 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' =>  ('Стаж сотрудника'),
      
'weight' => -10,
      
      ),
      
'salary' => array(
        
'label' => t('Зарплата'),
        
'description' => t('Зарплата сотрудника'),
        
'weight' => -10,
      ),
    ),
  );
 
  return 
$return;
}

?>

Комментарии

Аватар пользователя lait1989 lait1989 12 марта 2013 в 13:35

Не подскажете как сделать несколько взаимосвязанных сущностей, отображающихся во views? Несколько сущностей создал и все действия с ними доступны. А во views получается вывести только одну, связанные не выводятся в зависимостях views.