1

I try to create a "customizable options" with two extra fields, but I have the problem that when typing in one also write that same value in the other and in the "sku" field and I can not understand why this happens and how to correct it.

Here's what I have in code:

/etc/di.xml

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\Options\Option" type="Reiz\Rotuisfuntcs\Block\Adminhtml\Product\Edit\Tab\Options\Option"/> <preference for="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions" type="Reiz\Rotuisfuntcs\Ui\DataProvider\Catalog\Product\Form\Modifier\CustomOptions" /> </config> 

/etc/product_options.xml

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/product_options.xsd"> <option name="rotimpresion" label="Rotuislas - simple function" renderer="Reiz\Rotuislas\Block\Adminhtml\Product\Edit\Tab\Options\Type\RotImpresion"> <inputType name="field_options" label="fields" /> </option> </config> 

/Ui/DataProvider/Catalog/Product/Form/Modifier

<?php namespace Reiz\Rotuisfuntcs\Ui\DataProvider\Catalog\Product\Form\Modifier; use Magento\Catalog\Model\Locator\LocatorInterface; use Magento\Store\Model\StoreManagerInterface; use Magento\Catalog\Model\ProductOptions\ConfigInterface; use Magento\Catalog\Model\Config\Source\Product\Options\Price as ProductOptionsPrice; use Magento\Framework\UrlInterface; use Magento\Framework\Stdlib\ArrayManager; use Magento\Ui\Component\Modal; use Magento\Ui\Component\Container; use Magento\Ui\Component\DynamicRows; use Magento\Ui\Component\Form\Fieldset; use Magento\Ui\Component\Form\Field; use Magento\Ui\Component\Form\Element\Input; use Magento\Ui\Component\Form\Element\Select; use Magento\Ui\Component\Form\Element\Checkbox; use Magento\Ui\Component\Form\Element\ActionDelete; use Magento\Ui\Component\Form\Element\DataType\Text; use Magento\Ui\Component\Form\Element\DataType\Number; use Magento\Framework\Locale\CurrencyInterface; /** * Data provider for "Customizable Options" panel * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class CustomOptions extends \Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\CustomOptions { /**#@+ * Custom options */ // field simples const FIELD_TYPE_WEIGHT_ONE = 'one'; const FIELD_TYPE_WEIGHT_TWO = 'two'; const FIELD_TYPE_IMG_URL = 'papels'; protected function getStaticTypeContainerConfig($sortOrder) { return [ 'arguments' => [ 'data' => [ 'config' => [ 'componentType' => Container::NAME, 'formElement' => Container::NAME, 'component' => 'Magento_Ui/js/form/components/group', 'breakLine' => false, 'showLabel' => false, 'additionalClasses' => 'admin__field-group-columns admin__control-group-equal', 'sortOrder' => $sortOrder, ], ], ], 'children' => [ static::FIELD_PRICE_NAME => $this->getPriceFieldConfig(10), static::FIELD_PRICE_TYPE_NAME => $this->getPriceTypeFieldConfig(20), static::FIELD_SKU_NAME => $this->getSkuFieldConfig(30), static::FIELD_TYPE_WEIGHT_ONE => $this->getWeight_height_FieldConfig(30), static::FIELD_TYPE_WEIGHT_TWO => $this->getWeight_width_FieldConfig(30), static::FIELD_MAX_CHARACTERS_NAME => $this->getMaxCharactersFieldConfig(40), static::FIELD_FILE_EXTENSION_NAME => $this->getFileExtensionFieldConfig(50), static::FIELD_IMAGE_SIZE_X_NAME => $this->getImageSizeXFieldConfig(60), static::FIELD_IMAGE_SIZE_Y_NAME => $this->getImageSizeYFieldConfig(70) ] ]; } protected function getTypeFieldConfig($sortOrder) { return [ 'arguments' => [ 'data' => [ 'config' => [ 'label' => __('Option Type'), 'componentType' => Field::NAME, 'formElement' => Select::NAME, 'component' => 'Magento_Catalog/js/custom-options-type', 'elementTmpl' => 'ui/grid/filters/elements/ui-select', 'selectType' => 'optgroup', 'dataScope' => static::FIELD_TYPE_NAME, 'dataType' => Text::NAME, 'sortOrder' => $sortOrder, 'options' => $this->getProductOptionTypes(), 'disableLabel' => true, 'multiple' => false, 'selectedPlaceholders' => [ 'defaultPlaceholder' => __('-- Please select --'), ], 'validation' => [ 'required-entry' => true ], 'groupsConfig' => [ 'text' => [ 'values' => ['field', 'area'], 'indexes' => [ static::CONTAINER_TYPE_STATIC_NAME, static::FIELD_PRICE_NAME, static::FIELD_PRICE_TYPE_NAME, static::FIELD_SKU_NAME, static::FIELD_MAX_CHARACTERS_NAME ] ], 'file' => [ 'values' => ['file'], 'indexes' => [ static::CONTAINER_TYPE_STATIC_NAME, static::FIELD_PRICE_NAME, static::FIELD_PRICE_TYPE_NAME, static::FIELD_SKU_NAME, static::FIELD_FILE_EXTENSION_NAME, static::FIELD_IMAGE_SIZE_X_NAME, static::FIELD_IMAGE_SIZE_Y_NAME ] ], 'select' => [ 'values' => ['drop_down', 'radio', 'checkbox', 'multiple'], 'indexes' => [ static::GRID_TYPE_SELECT_NAME ] ], 'data' => [ 'values' => ['date', 'date_time', 'time'], 'indexes' => [ static::CONTAINER_TYPE_STATIC_NAME, static::FIELD_PRICE_NAME, static::FIELD_PRICE_TYPE_NAME, static::FIELD_SKU_NAME ] ], 'rotimpresion' => [ 'values' => ['field_options'], 'indexes' => [ static::CONTAINER_TYPE_STATIC_NAME, static::FIELD_TYPE_WEIGHT_ONE, static::FIELD_TYPE_WEIGHT_TWO, static::FIELD_PRICE_NAME, static::FIELD_PRICE_TYPE_NAME, static::FIELD_SKU_NAME, static::FIELD_MAX_CHARACTERS_NAME ] ] ], ], ], ], ]; } protected function getWeight_height_FieldConfig($sortOrder) { return [ 'arguments' => [ 'data' => [ 'config' => [ 'label' => __('Field 1: '), 'componentType' => Field::NAME, 'formElement' => Input::NAME, 'dataScope' => static::FIELD_SKU_NAME, 'dataType' => Text::NAME, 'sortOrder' => $sortOrder, ], ], ], ]; } protected function getWeight_width_FieldConfig($sortOrder) { return [ 'arguments' => [ 'data' => [ 'config' => [ 'label' => __('Field 2: '), 'componentType' => Field::NAME, 'formElement' => Input::NAME, 'dataScope' => static::FIELD_SKU_NAME, 'dataType' => Text::NAME, 'sortOrder' => $sortOrder, ], ], ], ]; } protected function getUrl_FieldConfig($sortOrder) { return [ 'arguments' => [ 'data' => [ 'config' => [ 'label' => __('Url image: '), 'componentType' => Field::NAME, 'formElement' => Input::NAME, 'dataScope' => static::FIELD_SKU_NAME, 'dataType' => Text::NAME, 'sortOrder' => $sortOrder, ], ], ], ]; } } 

Here I leave links in which I have been referencing:

http://magento.ikantam.com/qa/custom-input-types-custom-options

Magento 2 : Override custom option text template

1
  • Resolved Changed value in dataScope, 'dataScope' => static::FIELD_SKU_NAME for 'dataScope' => static::YOUR_CONSTANT Commented Sep 14, 2017 at 12:27

1 Answer 1

0

Resolved as follow:

Changed value in dataScope

'dataScope' => static::FIELD_SKU_NAME for 'dataScope' => static::YOUR_CONSTANT

protected function getWeight_width_FieldConfig($sortOrder) { return [ 'arguments' => [ 'data' => [ 'config' => [ 'label' => __('Field 2: '), 'componentType' => Field::NAME, 'formElement' => Input::NAME, 'dataScope' => static::FIELD_SKU_NAME, 'dataType' => Text::NAME, 'sortOrder' => $sortOrder, ], ], ], ]; } 
1
  • How to display it front end Commented Dec 21, 2018 at 11:32

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.