Saya sedang belajar komponen UI.
Saya ingin menambahkan bagian kustom di produk edit / tambahkan formulir backend jadi untuk itu
Saya telah membuat file berikut.
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'))
);
}
}
Itu ditampilkan di backend dengan benar seperti yang saya inginkan tetapi ketika mencoba untuk menyimpan produk itu tidak menyimpan nilai bidang ini.
Apakah saya perlu membuat Atribut " monday_time_group "? Apakah ini cara yang tepat untuk melakukannya? Bagaimana saya bisa mendapatkan nilai ini di frontend untuk Produk?
MEMPERBARUI:
Saya telah membuat atribut monday_time_group tetapi masih tidak berfungsi.
uicomponent
magento2.1.5
product-edit
Kaushal Suthar
sumber
sumber
Jawaban:
Oke akhirnya saya sudah menyelesaikan ini sendiri di sini adalah kode lengkap modul saya ...
registrasi.php
etc / module.xml
Setup / InstallData.php
Model \ Config \ Source \ TimeSetup.php
lihat / adminhtml / ui_component / product_form.xml
Dengan menggunakan kode di atas, Hemat data dengan benar, Satu-satunya masalah yang saya hadapi sekarang adalah bahwa atribut-atribut ini juga muncul di bagian Umum di bagian kustom saya yang dibuat yaitu "Grup Pengujian" sehingga sampai sekarang saya telah menyembunyikannya dari bagian Umum menggunakan CSS.
sumber
Dari apa yang saya lihat di sini tidak ada yang istimewa tentang atribut Anda.
Mereka adalah orang-orang biasa.
Anda cukup menambahkan atribut
monday_design_from
,monday_design_from
dan menempatkannya di grup yang terpisah.Saya sarankan Anda melakukannya melalui kode dan bukan secara manual karena saya menganggap Anda akan memiliki logika pada atribut ini.
Berikut adalah contoh tentang bagaimana Anda dapat melakukannya: https://magento.stackexchange.com/a/162115/146
Satu-satunya hal yang perlu Anda ubah jika Anda ingin atribut Anda muncul di bagian terpisah adalah menambahkan dalam array konfigurasi ini
sumber
Solusi sempurna tersedia di sini:
Tambahkan tab baru di halaman edit produk di admin Magento 2
Anda dapat menemukan solusi untuk versi magento2 apa pun
sumber