diff --git a/app/code/Magento/Catalog/Model/Config/Source/Product/Options/Type.php b/app/code/Magento/Catalog/Model/Config/Source/Product/Options/Type.php index 5d0c1f24872a76b3345d9a4995535c180f4931e8..ca62402f23a378129cac9cd10f43a42a5a463aa7 100644 --- a/app/code/Magento/Catalog/Model/Config/Source/Product/Options/Type.php +++ b/app/code/Magento/Catalog/Model/Config/Source/Product/Options/Type.php @@ -43,7 +43,7 @@ class Type implements \Magento\Framework\Option\ArrayInterface $types[] = ['label' => __($type['label']), 'value' => $type['name']]; } if (count($types)) { - $groups[] = ['label' => __($option['label']), 'value' => $types]; + $groups[] = ['label' => __($option['label']), 'value' => $types, 'optgroup-name' => $option['label']]; } } diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/custom-options.js b/app/code/Magento/Catalog/view/adminhtml/web/js/custom-options.js index 69072252e41f41174b9df8b764d2439f87a9d55b..ae23c3476b8b71df0fd2ff600672c80279247b3b 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/js/custom-options.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/js/custom-options.js @@ -194,7 +194,8 @@ define([ var widget = this, currentElement = $(event.target), parentId = '#' + currentElement.closest('.fieldset-alt').attr('id'), - group = currentElement.find('[value="' + currentElement.val() + '"]').closest('optgroup').attr('data-name'), + group = currentElement.find('[value="' + currentElement.val() + '"]') + .closest('optgroup').attr('data-optgroup-name'), previousGroup = $(parentId + '_previous_group').val(), previousBlock = $(parentId + '_type_' + previousGroup), tmpl; diff --git a/lib/internal/Magento/Framework/View/Element/Html/Select.php b/lib/internal/Magento/Framework/View/Element/Html/Select.php index 2b240270ba74f6f8ff30de729049b379558a8010..1bdbd099cc7cdd7072391b5c388130d14921bd16 100644 --- a/lib/internal/Magento/Framework/View/Element/Html/Select.php +++ b/lib/internal/Magento/Framework/View/Element/Html/Select.php @@ -151,21 +151,21 @@ class Select extends \Magento\Framework\View\Element\AbstractBlock $isArrayOption = true; foreach ($this->getOptions() as $key => $option) { + $optgroupName = ''; if ($isArrayOption && is_array($option)) { $value = $option['value']; $label = (string)$option['label']; - $name = $option['label'] instanceof \Magento\Framework\Phrase ? $option['label']->getText() : $label; + $optgroupName = isset($option['optgroup-name']) ? $option['optgroup-name'] : $label; $params = !empty($option['params']) ? $option['params'] : []; } else { $value = (string)$key; $label = (string)$option; - $name = $label; $isArrayOption = false; $params = []; } if (is_array($value)) { - $html .= '<optgroup label="' . $label . '" data-name="' . $name . '">'; + $html .= '<optgroup label="' . $label . '" data-optgroup-name="' . $optgroupName . '">'; foreach ($value as $keyGroup => $optionGroup) { if (!is_array($optionGroup)) { $optionGroup = ['value' => $keyGroup, 'label' => $optionGroup];