acquia_commercemanager-8.x-1.122/modules/acm_sku/src/Form/AcmSkuFormBuilder.php
modules/acm_sku/src/Form/AcmSkuFormBuilder.php
<?php
namespace Drupal\acm_sku\Form;
use Drupal\Core\Form\FormBuilder;
use Drupal\Core\Form\FormStateInterface;
/**
* TODO: remove this class once https://www.drupal.org/node/766146 is fixed.
*
* Class AcmSkuFormBuilder.
*/
class AcmSkuFormBuilder extends FormBuilder {
/**
* {@inheritdoc}
*/
public function getFormId($form_arg, FormStateInterface &$form_state) {
$form_id = parent::getFormId($form_arg, $form_state);
// Get the build info.
$build_info = $form_state->getBuildInfo();
// Check if we have 0th index set in build info.
if (isset($build_info['args'], $build_info['args'][0])) {
$sku = $build_info['args'][0];
// Check if argument is of type SKU.
if (get_class($sku) == 'Drupal\acm_sku\Entity\SKU') {
// Set the base_form_id.
$build_info['base_form_id'] = $form_id;
$form_state->setBuildInfo($build_info);
// Prepare additional form_id parts using the entity.
$additional_form_id_parts = [];
$additional_form_id_parts[] = $sku->getEntityTypeId();
$additional_form_id_parts[] = $sku->getType();
$additional_form_id_parts[] = $sku->id();
// Prepare the new form id.
$form_id = implode('_', $additional_form_id_parts) . '__' . $form_id;
}
}
return $form_id;
}
}
