Magento 2 Aggiungi categoria Renderer Albero Input con pulsante modale


13

Sto cercando di inserire l'input di categoria per il mio modulo personalizzato utilizzando il modulo uicomponent.

inserisci qui la descrizione dell'immagine

Sono in grado di creare un menu a discesa, ma come posso creare il pulsante e aprire un nuovo modale da esso?

Posso creare un pulsante usando uicomponent e aprire un modale da esso. Voglio un pulsante invece di una nuova categoria Voglio aggiungere il pulsante Seleziona prodotti e voglio aggiungere un elenco di prodotti delle categorie selezionate nella griglia.

Ecco il file XML per la creazione dell'input di categoria

<field name="parent">
    <argument name="data" xsi:type="array">
    <item name="options" xsi:type="object">Magento\Catalog\Ui\Component\Product\Form\Categories\Options</item>
     <item name="config" xsi:type="array">
          <item name="label" xsi:type="string" translate="true">Parent Category</item>
          <item name="componentType" xsi:type="string">field</item>
          <item name="formElement" xsi:type="string">select</item>
          <item name="component" xsi:type="string">Magento_Catalog/js/components/new-category</item>
           <item name="elementTmpl" xsi:type="string">ui/grid/filters/elements/ui-select</item>
           <item name="dataScope" xsi:type="string">data.parent</item>
           <item name="filterOptions" xsi:type="boolean">true</item>
           <item name="showCheckbox" xsi:type="boolean">false</item>
           <item name="disableLabel" xsi:type="boolean">true</item>
           <item name="multiple" xsi:type="boolean">false</item>
           <item name="levelsVisibility" xsi:type="number">1</item>
           <item name="sortOrder" xsi:type="number">20</item>
           <item name="required" xsi:type="boolean">true</item>
           <item name="validation" xsi:type="array">
                  <item name="required-entry" xsi:type="boolean">true</item>
            </item>
            <item name="listens" xsi:type="array">
                  <item name="${ $.namespace }.${ $.namespace }:responseData" xsi:type="string">setParsed</item>
             </item>
      </item>
     </argument>
</field>

Fino a quando non riesco a capire cosa c'è dentro e magari a trovare una risposta, posso consigliarti di dare un'occhiata alla Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Categorieslezione. È quello che aggiunge il selettore dell'albero delle categorie alla schermata di aggiunta / modifica del prodotto. Forse hai più fortuna nel capire cosa c'è dentro.
Marius

@Marius Ya guardando la stessa cosa sembra il modo migliore per farlo.
Priyank,

Ehi, penso che l'aggiunta di modificatori sia utilizzata solo per il modulo del prodotto ed è molto difficile aggiungerlo per il modello personalizzato dopo averlo cercato per circa 3 giorni, sono impazzito. Ho appena ricevuto il nome dell'elemento del componente dell'interfaccia utente non valido: 'category_mapping_form'
Priyank

Come funzionano le opzioni selezionate qui?
Amrit Pal Singh,

Risposte:


3

Questo codice di seguito funziona con me:

     <container>
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
            <item name="formElement" xsi:type="string">container</item>
            <item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
        </item>
        </argument>
        <field name="category_ids">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="filterOptions" xsi:type="boolean">true</item>
                    <item name="chipsEnabled" xsi:type="boolean">true</item>
                    <item name="label" xsi:type="string">Categories</item>
                    <item name="disableLabel" xsi:type="boolean">true</item>
                    <item name="component" xsi:type="string">Magento_Catalog/js/components/new-category</item>
                    <item name="formElement" xsi:type="string">select</item>
                    <item name="levelsVisibility" xsi:type="number">1</item>
                    <item name="elementTmpl" xsi:type="string">ui/grid/filters/elements/ui-select</item>
                    <item name="options" xsi:type="array">
                            <item name="0" xsi:type="array">
                                <item name="value" xsi:type="number">1</item>
                                <item name="label" xsi:type="string" translate="true">Category 1</item>
                                <item name="optgroup" xsi:type="array">
                                    <item name="0" xsi:type="array">
                                        <item name="value" xsi:type="number">2</item>
                                        <item name="is_active" xsi:type="boolean">true</item>
                                        <item name="label" xsi:type="string" translate="true">Category 1.1</item>
                                    </item>
                                </item>
                            </item>
                            <item name="1" xsi:type="array">
                                <item name="value" xsi:type="number">2</item>
                                <item name="is_active" xsi:type="boolean">true</item>
                                <item name="label" xsi:type="string" translate="true">Category 2</item>
                            </item>
                    </item>
                   <item name="config" xsi:type="array">
                       <item name="dataScope" xsi:type="string">category_ids</item>
                   </item>
                </item>
            </argument>
        </field>
    </container>

Questo è il risultato:

dimostrazione

Nota: con le opzioni oggetto è necessario modificare xsi:type="object"e dichiarare una classe per essa.

Spero sia stato utile !


1
la mia preoccupazione non è come dovrei creare l'albero. La mia domanda è quella di creare un pulsante accanto al menu a discesa, come mostrato nella mia schermata, aprire un modale da esso e mostrare l'elenco dei prodotti griglia in esso.
Priyank,

Come ottenere le opzioni selezionate in questo?
Amrit Pal Singh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.