예제 #1
0
 /**
  * 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();
 }
예제 #2
0
 /**
  * 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);
 }