Ich lerne UI-Komponente.
Ich möchte dafür einen benutzerdefinierten Abschnitt im Backend-Formular zum Bearbeiten / Hinzufügen von Produkten hinzufügen
Ich habe folgende Dateien erstellt.
vendor / module / view / 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>
Vendor \ Module \ 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'))
);
}
}
Es wird im Backend richtig angezeigt, wie ich es wollte, aber wenn Sie versuchen, das Produkt zu speichern, wird dieser Feldwert nicht gespeichert.
Muss ich das Attribut " monday_time_group " erstellen ? Ist das der richtige Weg? Wie kann ich den Wert davon im Frontend für Produkt erhalten?
AKTUALISIEREN:
Ich habe das Attribut monday_time_group erstellt, aber es funktioniert immer noch nicht.