/** * Checks access to the eck entity add page for the entity bundle type. * * @param AccountInterface $account * The currently logged in account. * @param EckEntityTypeInterface $eck_entity_type * The entity type. * @param string $eck_entity_bundle * (optional) The entity type bundle. * * @return bool|AccessResult|\Drupal\Core\Access\AccessResultInterface * A \Drupal\Core\Access\AccessInterface constant value. */ public function access(AccountInterface $account, EckEntityTypeInterface $eck_entity_type, $eck_entity_bundle = NULL) { $access_control_handler = $this->entityManager->getAccessControlHandler($eck_entity_type->id()); if (!empty($eck_entity_bundle)) { return $access_control_handler->createAccess($eck_entity_bundle, $account, array(), TRUE); } // Get the entity type bundles. $bundles = $this->entityManager->getStorage($eck_entity_type->id() . '_type')->loadMultiple(); // If checking whether an entity of any type may be created. foreach ($bundles as $eck_entity_bundle) { if (($access = $access_control_handler->createAccess($eck_entity_bundle->id(), $account, array(), TRUE)) && $access->isAllowed()) { return $access; } } // No opinion. return AccessResult::neutral(); }
/** * Provides the entity submission form. * * @param EckEntityTypeInterface $eck_entity_type * The entity type. * @param string $eck_entity_bundle * The entity type bundle. * * @return array * The entity submission form. */ public function add(EckEntityTypeInterface $eck_entity_type, $eck_entity_bundle) { $entity_type = $this->entityManager()->getStorage($eck_entity_type->id()); // Create an entity. $entity = $entity_type->create(array('type' => $eck_entity_bundle)); // Get the form and return it. return $this->entityFormBuilder()->getForm($entity); }