Estoy aprendiendo el componente UI.
Quiero agregar una sección personalizada en el formulario de edición / agregar backend del producto, para eso
He creado los siguientes archivos.
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>
Proveedor \ Módulo \ Modelo \ Configuración \ Fuente \ 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'))
);
}
}
Se muestra en el backend correctamente como quería, pero cuando intento guardar el producto, no guarda este valor de campo.
¿Necesito crear el atributo " monday_time_group "? ¿Es esta la forma correcta de hacerlo? ¿Cómo puedo obtener el valor de esto en la interfaz de producto?
ACTUALIZAR:
He creado el atributo monday_time_group pero aún no funciona.
uicomponent
magento2.1.5
product-edit
Kaushal Suthar
fuente
fuente
Respuestas:
Bien, finalmente resolví esto solo, aquí está el código completo de mi módulo ...
registro.php
etc / module.xml
Setup / InstallData.php
Modelo \ Config \ Source \ TimeSetup.php
ver / adminhtml / ui_component / product_form.xml
Usando el código anterior, los datos se guardan correctamente, solo los problemas que estoy enfrentando ahora es que estos atributos están apareciendo en la sección General, así como en mi sección personalizada creada que es "Grupo de prueba", así que a partir de ahora los he ocultado de la sección General CSS
fuente
Por lo que veo aquí no hay nada especial en tus atributos.
Son los regulares.
Usted puede simplemente añadir los atributos
monday_design_from
,monday_design_from
y colocarlos en un grupo separado.Le recomiendo que lo haga a través del código y no de forma manual porque supongo que tendrá lógica en estos atributos.
Aquí hay un ejemplo de cómo puede hacer eso: https://magento.stackexchange.com/a/162115/146
Lo único que necesita cambiar si desea que sus atributos aparezcan en una sección separada es agregar en la matriz de configuración esto
fuente
Solución perfecta disponible aquí:
Agregar nueva pestaña en la página de edición del producto en admin Magento 2
puedes encontrar una solución para cualquier versión de magento2
fuente