예제 #1
0
 /**
  * Selects the store for the given purchasable entity.
  *
  * If the entity is sold from one store, then that store is selected.
  * If the entity is sold from multiple stores, and the current store is
  * one of them, then that store is selected.
  *
  * @param \Drupal\commerce\PurchasableEntityInterface $entity
  *   The entity being added to cart.
  *
  * @throws \Exception
  *   When the entity can't be purchased from the current store.
  *
  * @return \Drupal\commerce_store\Entity\StoreInterface
  *   The selected store.
  */
 protected function selectStore(PurchasableEntityInterface $entity)
 {
     // @todo Add getStores() to the PurchasableEntityInterface.
     $stores = $entity->getProduct()->getStores();
     if (count($stores) === 1) {
         $store = reset($stores);
     } else {
         $store = $this->storeContext->getStore();
         if (!in_array($store, $stores)) {
             // Indicates that the site listings are not filtered properly.
             throw new \Exception("The given entity can't be purchased from the current store.");
         }
     }
     return $store;
 }