You are here

function commerce_wishlist_add_to_wishlist_form_submit in Commerce Wishlist 8.3

Form submit handler for add-to-wishlist actions.

Note that since we must fire this function off using a static form_alter call, we have no choice but to bring in the services and objects that we need. Normally we would create a class and use dependency injection to get at all of this context. We are very open to a better way of implementing this hijack of the add to cart form.

Parameters

array $form: The form.

\Drupal\Core\Form\FormStateInterface $form_state: The form state.

1 string reference to 'commerce_wishlist_add_to_wishlist_form_submit'
commerce_wishlist_form_commerce_order_item_add_to_cart_form_alter in ./commerce_wishlist.module
Implements hook_form_BASE_FORM_ID_alter() for 'commerce_order_item_add_to_cart_form'.

File

./commerce_wishlist.module, line 312
Defines the Wishlist entity and associated features.

Code

function commerce_wishlist_add_to_wishlist_form_submit(array $form, FormStateInterface $form_state) {

  /** @var \Drupal\commerce_wishlist\WishlistManagerInterface $wishlist_manager */
  $wishlist_manager = \Drupal::service('commerce_wishlist.wishlist_manager');

  /** @var \Drupal\commerce_wishlist\WishlistProviderInterface $wishlist_provider */
  $wishlist_provider = \Drupal::service('commerce_wishlist.wishlist_provider');

  /** @var \Drupal\commerce_cart\Form\AddToCartForm $add_to_cart_form */
  $add_to_cart_form = $form_state
    ->getFormObject();

  /** @var \Drupal\commerce_order\Entity\OrderItem $order_item */
  $order_item = $add_to_cart_form
    ->buildEntity($form, $form_state);
  $purchasable_entity = $order_item
    ->getPurchasedEntity();
  $quantity = $order_item
    ->getQuantity();

  // Determine the wishlist type to use.
  $wishlist_type = \Drupal::config('commerce_wishlist.settings')
    ->get('default_type') ?: 'default';

  // Use existing or create a new wishlist.
  $wishlist = $wishlist_provider
    ->getWishlist($wishlist_type);
  if (!$wishlist) {
    $wishlist = $wishlist_provider
      ->createWishlist($wishlist_type);
  }
  $combine = $form_state
    ->get([
    'settings',
    'combine',
  ]);
  $wishlist_manager
    ->addEntity($wishlist, $purchasable_entity, $quantity, $combine);
}