public static function ProductBundleItemInlineForm::variationsRefresh in Commerce Product Bundle 8
Product field ajax callback.
Parameters
array $form: Inline entity form.
\Drupal\Core\Form\FormStateInterface $form_state: Inline entity form_state.
Return value
mixed Form element
File
- src/
Form/ ProductBundleItemInlineForm.php, line 145
Class
- ProductBundleItemInlineForm
- Defines the inline form for product bundle items.
Namespace
Drupal\commerce_product_bundle\FormCode
public static function variationsRefresh(array $form, FormStateInterface $form_state) {
$element = [];
$triggering_element = $form_state
->getTriggeringElement();
// Remove the action and the actions container.
$array_parents = array_slice($triggering_element['#array_parents'], 0, -2);
while (!(isset($element['#type']) && $element['#type'] == 'inline_entity_form')) {
$element = NestedArray::getValue($form, $array_parents);
array_pop($array_parents);
}
// Get the origin variations form.
$variationsForm = $element['variations'];
$bundleItems = $form_state
->getValue('bundle_items');
if ($element['#op'] == 'add') {
if (isset($bundleItems['form']['inline_entity_form']['product'][0]['target_id'])) {
$productId = $bundleItems['form']['inline_entity_form']['product'][0]['target_id'];
}
}
elseif ($element['#op'] == 'edit') {
$entities = $bundleItems['form']['inline_entity_form']['entities'];
if (isset($entities[$element['#ief_row_delta']]['form']['product'][0]['target_id'])) {
$productId = $entities[$element['#ief_row_delta']]['form']['product'][0]['target_id'];
}
}
if (!empty($productId)) {
$variationsForm['widget']['#options'] = ProductBundleItemInlineForm::variationsOptions($productId);
}
return $variationsForm;
}