Я изучаю компонент пользовательского интерфейса.
Я хочу добавить пользовательский раздел в форму редактирования продукта / добавить бэкэнд, так что для этого
Я создал следующие файлы.
поставщик / модуль / вид / adminhtml / ui_component / product_form.xml
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="mobile">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Time</item>
<item name="provider" xsi:type="string">product</item>
<item name="dataScope" xsi:type="string">data.product</item>
<item name="sortOrder" xsi:type="number">2</item>
<item name="collapsible" xsi:type="boolean">true</item>
<item name="opened" xsi:type="boolean">false</item>
<item name="ns" xsi:type="string">product_form</item>
</item>
</argument>
<container name="monday_time_group">
<argument name="data" xsi:type="array">
<item name="type" xsi:type="string">group</item>
<item name="config" xsi:type="array">
<item name="additionalClasses" xsi:type="string">admin__control-grouped-date</item>
<item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
<item name="label" xsi:type="string" translate="true">Monday</item>
<item name="required" xsi:type="boolean">false</item>
<item name="sortOrder" xsi:type="number">220</item>
<item name="breakLine" xsi:type="boolean">false</item>
<item name="scopeLabel" xsi:type="string">[STORE VIEW]</item>
</item>
</argument>
<field name="monday_design_from">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Vendor\Module\Model\Config\Source\TimeSetup</item>
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Monday</item>
<item name="additionalClasses" xsi:type="string">admin__field-date</item>
<item name="sortOrder" xsi:type="number">230</item>
<item name="dataType" xsi:type="string">string</item>
<item name="formElement" xsi:type="string">select</item>
</item>
</argument>
</field>
<field name="monday_design_to">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Vendor\Module\Model\Config\Source\TimeSetup</item>
<item name="config" xsi:type="array">
<item name="additionalClasses" xsi:type="string">admin__field-date</item>
<item name="sortOrder" xsi:type="number">240</item>
<item name="dataType" xsi:type="string">string</item>
<item name="formElement" xsi:type="string">select</item>
</item>
</argument>
</field>
</container>
</fieldset>
</form>
Производитель \ Модуль \ Model \ Config \ Source \ TimeSetup.php
<?php
namespace Vendor\Module\Model\Config\Source;
class TimeSetup extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
{
protected $_optionsData;
/**
* getAllOptions
*
* @return array
*/
public function getAllOptions()
{
if ($this->_options === null) {
$this->_options = [
['value' => 'one', 'label' => __('one')],
['value' => 'two', 'label' => __('two')]
];
}
return $this->_options;
}
final public function toOptionArray()
{
return array(
array('value' => 'one', 'label' => __('one')),
array('value' => 'two', 'label' => __('two'))
);
}
}
Он отображается в бэкэнде должным образом, как я хотел, но при попытке сохранить продукт не сохраняет значение этого поля.
Нужно ли создавать атрибут " monday_time_group "? Это правильный способ сделать это? Как я могу получить значение этого в интерфейсе для продукта?
ОБНОВИТЬ:
Я создал атрибут monday_time_group, но все еще не работает.
uicomponent
magento2.1.5
product-edit
Каушал Сутар
источник
источник
Ответы:
Хорошо, наконец, я решил это сам, вот полный код моего модуля ...
registration.php
и т.д. / module.xml
Настройка / InstallData.php
Модель \ Config \ Source \ TimeSetup.php
просмотреть / adminhtml / ui_component / product_form.xml
Используя приведенный выше код, Сохранение данных должным образом. Единственные проблемы, с которыми я сталкиваюсь сейчас, заключаются в том, что эти атрибуты появляются в разделе «Общие», а также в моем созданном пользовательском разделе «Группа тестирования», поэтому на данный момент я скрываю их из раздела «Общие», CSS.
источник
Из того, что я вижу здесь, нет ничего особенного в ваших качествах.
Они обычные.
Вы можете просто добавить атрибуты
monday_design_from
,monday_design_from
и поместить их в отдельную группу.Я рекомендую вам делать это с помощью кода, а не вручную, потому что я предполагаю, что у вас будет логика для этих атрибутов.
Вот пример того, как вы можете это сделать: https://magento.stackexchange.com/a/162115/146
Единственное, что вам нужно изменить, если вы хотите, чтобы ваши атрибуты появлялись в отдельном разделе, это добавить в массив конфигурации этот
источник
Идеальное решение доступно здесь:
Добавить новую вкладку на странице редактирования продукта в admin Magento 2
вы можете найти решение для любой версии magento2
источник