commerce_product_bundle-8.x-1.x-dev/src/Form/BundleItemOrderItemInlineForm.php
src/Form/BundleItemOrderItemInlineForm.php
<?php
namespace Drupal\commerce_product_bundle\Form;
use Drupal\commerce_product_bundle\Entity\BundleItemOrderItemInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\inline_entity_form\Form\EntityInlineForm;
/**
* Defines the inline form for order items.
*/
class BundleItemOrderItemInlineForm extends EntityInlineForm {
/**
* {@inheritdoc}
*/
public function getEntityTypeLabels() {
$labels = [
'singular' => t('product bundle item order item'),
'plural' => t('product bundle item order items'),
];
return $labels;
}
/**
* {@inheritdoc}
*/
public function getTableFields($bundles) {
$fields = parent::getTableFields($bundles);
$fields['purchased_entity'] = [
'type' => 'field',
'label' => t('Purchased Entity'),
'weight' => 2,
];
$fields['unit_price'] = [
'type' => 'field',
'label' => t('Unit price'),
'weight' => 2,
];
$fields['quantity'] = [
'type' => 'field',
'label' => t('Quantity'),
'weight' => 3,
];
return $fields;
}
/**
* {@inheritdoc}
*/
public function entityForm(array $entity_form, FormStateInterface $form_state) {
$entity_form = parent::entityForm($entity_form, $form_state);
$entity_form['#entity_builders'][] = [get_class($this), 'populateTitle'];
return $entity_form;
}
/**
* Entity builder: populates the bundle item order item title from the bundle item.
*
* @param string $entity_type
* The entity type identifier.
* @param \Drupal\commerce_product_bundle\Entity\BundleItemOrderItemInterface $order_item
* The order item.
* @param array $form
* The complete form array.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
*/
public static function populateTitle($entity_type, BundleItemOrderItemInterface $order_item, array $form, FormStateInterface $form_state) {
/** @var \Drupal\commerce_product_bundle\Entity\BundleItemInterface $bundle_item */
$bundle_item = $order_item->getBundleItem();
$bundle_item->setCurrentVariation($order_item->getPurchasedEntity());
if ($order_item->isNew()) {
$order_item->setTitle($bundle_item->getTitle());
}
}
}
