sector_jobs-1.0.x-dev/sector_jobs.module
sector_jobs.module
<?php
use Drupal\Core\Form\FormStateInterface;
use Drupal\commerce_product\Entity\ProductVariation;
/**
* @file
*/
/**
* Implements hook_form_alter().
*/
function sector_jobs_form_node_job_post_a_job_form_alter(&$form, FormStateInterface $form_state){
$form['actions']['submit']['#submit'][] = 'sector_jobs_add_node_to_cart_submit';
//dpm($form);
}
function sector_jobs_add_node_to_cart_submit($form, FormStateInterface $formState){
$variationId = 1;
$node = $formState->getFormObject()->getEntity();
$variation = ProductVariation::load($variationId);
// Assume 1st store as normally we won't have more than one.
$store = current($variation->getStores());
// Get or create a cart.
$cartManager = \Drupal::service('commerce_cart.cart_manager');
$cartProvider = \Drupal::service('commerce_cart.cart_provider');
$cart = $cartProvider->getCart('default', $store);
if (!$cart) {
$cart = $cartProvider->createCart('default', $store);
}
else {
// Check if the node is already in the user's cart.
foreach ($cart->getItems() as $line_item) {
if ($line_item->bundle() == 'job_listing') {
if ($line_item->field_job_node[0]->target_id == $node->id()) {
return;
}
}
}
}
// Set up line item.
$quantity = 1;
$combine = FALSE;
$line_item = $cartManager
->addEntity($cart, $variation, $quantity, $combine);
$line_item->set('field_job_node', $node);
$line_item->save();
}
