0

エンティティを使用して drupal でカスタム モジュールを作成しました。エンティティ API モジュールをインストールしました。employee_management.install ファイル (ここで、employee_management はカスタム モジュール名) を使用して、2 つの列 (employee_id、first_name) だけでデータベース スキーマを作成しました。employee はエンティティ名です。

必要な関数 employee_management.module も作成しましたが、それでもエラーが表示されます。管理者/構造/従業員に新しいエンティティを追加しようとすると、「見つかりません」というエラーが表示されます。

要求された URL drupal/employee/add/ は、このサーバーで見つかりませんでした。

function employee_management_entity_info() { 
    $employee_info['employee'] = array(
    // A human readable label to identify our entity.
    'label' => t('Employee Entity'),
    // The controller for our Entity - extends the Drupal core controller.
    'controller class' => 'EmployeeController',
    // The table defined in hook_schema()
    'base table' => 'employee',
    // Returns the uri elements of an entity
    'uri callback' => 'employee',
    // Fieldable that we can attach fields to it - the core functionality will
    // do the heavy lifting here.
    'fieldable' => TRUE,
    // The unique key of our base table.
    'entity keys' => array(
      'id' => 'employee_id',
    ),
    // FALSE disables caching -  caching functionality is handled by Drupal core
    'static cache' => TRUE,
    // Attach bundles - i.e. alternative configurations of fields associated with a main entity.
    'bundles' => array(
      'employee' => array(
        'label' => 'Employee',
        // Information below is used by the Field UI - they "attach" themselves here and lets us
        // do the standard field management that all the core entities enjoy.
        'admin' => array(
          'path' => 'admin/structure/employee/add',
          'access arguments' => array('administer employee entities'),
        ),
      ),
    ),
    // View modes allow entities to be displayed differently based on context. We simply have one option
    // here but an alternative would be to have a Full and Teaser mode akin to node.
    'view modes' => array(
      'full' => array(
        'label' => t('Full'),
        'custom settings' => FALSE,
      ),
    )
  );

  return $employee_info;
}

編集

function employee_uri($employee) {
  return array(
    'path' => 'employee/' . $employee->employee_id,
  );
}

そして、ここにファイル employee_management.module 内の関数の完全なリストがあります

4

1 に答える 1

1

エンティティを作成するためのルートとフォームを自動的に取得することはできません。それを自分で実装する必要があります。hook_menuこのガイドを参照してください。

于 2013-02-25T10:10:38.137 に答える