0
votes

I have created a custom module in drupal with entities. I have installed the entity api module. I have created my database schema with just two columns (employee_id, first_name) through the help of employee_management.install file (where as employee_management is my custom module name) and employee is my entity name.

I have also written the requisite functions employee_management.module but still it shows me the error , Whenever i tried to add a new entity in the admin/structure/employee it shows me the following error: "Not Found".

The requested URL drupal/employee/add/ was not found on this server.

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;
}

EDIT

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

And here is the complete list of function in the file employee_management.module

1

1 Answers

1
votes

You don't automagically get the route and form to create your entity, you'll have to implement that yourself. See hook_menu and this guide.