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