Форма компонента пользовательского интерфейса сетки администратора Magento2 скрывает несколько полей на основе условия php


У меня так много полей в форме сетки администратора, которые сделаны с использованием компонента пользовательского интерфейса. Я хочу скрыть некоторые поля, используя условие php. Я знаю, что это можно сделать с помощью файла dataProvider, и я также следил за этой нитью , Отключив поле компонента пользовательского интерфейса при условии в Magento 2.

Но у меня это не сработало. Делал ли кто-нибудь это до того, как у него появилась какая-либо идея/решение, кроме этого?

Пожалуйста, направляйте. Это было бы действительно удобно.

Спасибо,

Author: Pratik Navapara, 2018-09-07

2 answers

Переопределите функцию getMeta в вашем поставщике данных и установите значение следующим образом.

Мой form.xml

    <fieldset name="fieldset_name">            
            <field name="attribute_id">
                <argument name="data" xsi:type="array">
                    <item name="options" xsi:type="object">Vendor\Module\Model\Source\Attributes</item>
                    <item name="config" xsi:type="array">
                        <item name="dataType" xsi:type="string">text</item>
                        <item name="formElement" xsi:type="string">select</item>
                        <item name="label" xsi:type="string" translate="true">Attribute</item>
                        <item name="component" xsi:type="string">Vendor_Module/js/form/element/select-option</item>                    
                        <item name="dataScope" xsi:type="string">attribute_id</item>
                        <item name="componentType" xsi:type="string">select</item>
                        <item name="validation" xsi:type="array">
                            <item name="required-entry" xsi:type="boolean">true</item>
                        </item>
                    </item>
                </argument>
            </field>
</fieldset>

Мои данные предоставляются.

public function getMeta()
    {   
        $meta = parent::getMeta();
        $id = $this->request->getParam('id');
        if(<<Your Condition>>){

            $meta['fieldset_name']['children']['attribute_id']['arguments']['data']['config']['disabled'] = 1;
        }
        return $meta;
    }

Я отключил поле формы, используя это. Это нормально работает. ты можешь попробовать.

Если у вас все еще есть какие-либо вопросы, дайте мне знать.

 8
Author: Dharmendra Jadav, 2018-09-07 09:31:37

У меня отключен набор полей в добавлении новой формы на основе идентификатора сущности

Добавьте следующий код в свой класс поставщика данных

public function getMeta()
    {
        $meta = parent::getMeta();
        $id = $this->request->getParam('entity_id');
        if(isset($id)){

           $meta['fieldset_name']['arguments']['data']['config']['visible'] = 1;


        }
        else{
           $meta['fieldset_name']['arguments']['data']['config']['visible'] = 0;


        }
        return $meta;
    }
 1
Author: Smita Kagwade, 2020-09-07 05:43:39