Estou aprendendo o componente da interface do usuário.
Quero adicionar uma seção personalizada no formulário de edição / adição de produto, para que
Eu criei os seguintes arquivos.
fornecedor / módulo / 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>
Fornecedor \ Módulo \ Modelo \ Config \ Origem \ 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'))
);
}
}
Ele está sendo exibido no back-end corretamente como eu queria, mas ao tentar salvar o produto, não está salvando esse valor do campo.
Preciso criar o atributo " monday_time_group "? Essa é a maneira correta de fazer isso? Como posso obter o valor disso na interface do produto?
ATUALIZAR:
Eu criei o atributo monday_time_group, mas ainda não está funcionando.
uicomponent
magento2.1.5
product-edit
Kaushal Suthar
fonte
fonte
Respostas:
Ok, finalmente, eu resolvi isso sozinho aqui está o código completo do meu módulo ...
registration.php
etc / module.xml
Setup / InstallData.php
Model \ Config \ Source \ TimeSetup.php
view / adminhtml / ui_component / product_form.xml
Usando o código acima, os dados salvando corretamente, apenas os problemas que estou enfrentando agora é que esses atributos estão aparecendo na seção Geral, bem como na minha seção personalizada criada, que é "Grupo de Testes", para que agora eu os oculte da seção Geral usando CSS.
fonte
Pelo que vejo aqui, não há nada de especial em seus atributos.
Eles são regulares.
Você pode simplesmente adicionar os atributos
monday_design_from
,monday_design_from
e colocá-los em um grupo separado.Eu recomendo que você faça isso via código e não manualmente, porque presumo que você tenha lógica nesses atributos.
Aqui está um exemplo de como você pode fazer isso: https://magento.stackexchange.com/a/162115/146
A única coisa que você precisa alterar se deseja que seus atributos apareçam em uma seção separada é adicionar à matriz de configuração este
fonte
Solução perfeita disponível aqui:
Adicione uma nova guia na página de edição do produto no admin Magento 2
você pode encontrar solução para qualquer versão do magento2
fonte