Как добавить значения по умолчанию для конфигурации системы в magento 2


Как добавить значения по умолчанию для конфигурации системы в magento 2.

Мне нужно создать и назначить значения по умолчанию для конфигурации системы(system.xml ) для моего пользовательского модуля.

Я уже создал системные настройки для своего пользовательского модуля.

В форме пользовательского интерфейса у меня есть поле (загрузчик), а именно небольшое изображение, которое содержит **конфигурация серверной системы, которую я показал на рисунке ниже**.

Для приведенных ниже конфигурация системы enter image description here

Я предложил установить конфигурацию системы, как показано ниже, используя \Magento\Config\Block\System\Config\Form\Field\FieldArray\AbstractFieldArray.php и \Magento\Конфигурация\просмотр\adminhtml\шаблоны\страница\система\конфигурация\форма\поле\массив.phtml

Теперь он работает хорошо, и конфигурация также сохраняется в БД. Но мне нужно **создать значения по умолчанию для конфигурации моей системы в config.xml . Пожалуйста, предоставьте мне решение.

В таблице core_config Мое значение конфигурации системы хранится в формате ниже для небольшого изображения

{"_1517563385604_604":{" ширина": "480", "высота": "300", "размер изображения":"25900"}}

Для типа файла изображения

Jpg, jpeg, png, gif

Jpg, jpeg, png, gif

Как мне придать это значение в config.xml который находится в конфигурации по умолчанию

System.xml

 <?xml version="1.0"?>


<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="aaa" translate="label" type="text" sortOrder="100" showInDefault="1" showInWebsite="1" showInStore="1">
            <label>XXXXX</label>
            <tab>x_y_tab</tab>
            <resource>X_Y::config</resource>
            <group id="groupslide" translate="label" type="text" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>YYYYY</label>
                <field id="small_image" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
                    <label>Small Image</label>
                    <frontend_model>X\Y\Block\Adminhtml\System\Config</frontend_model>
                    <backend_model>Magento\Config\Model\Config\Backend\Serialized\ArraySerialized</backend_model>                    

                </field>

                <field id="image_file_types" translate="label" type="text" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
                    <label>Image File Types</label>
                    <comment>Multiple values are seperated with comma</comment>
                </field>
            </group>
        </section>
    </system>
</config>
Author: Jaisa, 2018-02-05

2 answers

Вам нужно будет создать значения конфигурации в config.xml , вы можете взять ссылку на это из любого модуля, который добавляет записи в конфигурацию, и использовать его в своем phtml, проверить значение в бд и, если значение недоступно или равно нулю, установить значение из core/config.

Дайте мне знать, если вам тоже нужна ссылка на код, чтобы разобраться в этом.

 1
Author: Aman Srivastava, 2018-02-07 08:37:23

Значение по умолчанию не работает с массивами, сериализованными в Magento 2.0.x–2.1.x. Проверьте эту проблему на github для получения подробной информации. Чтобы решить эту проблему, вы можете использовать сценарии установки данных в Setup/InstallData.php. Пример функции может выглядеть следующим образом

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $index = time();
        $configData = [
            'section' => 'nwdarrayserialized',
            'website' => null,
            'store'   => null,
            'groups'  => [
                'general' => [
                    'fields' => [
                        'responsiveItems' => [
                            'value' => array(
                                $index.'_0' => array("breakpoint" => "0", "items" => "1"),
                                $index.'_1' => array("breakpoint" => "480", "items" => "2"),
                                $index.'_2' => array("breakpoint" => "768", "items" => "3"),
                                $index.'_3' => array("breakpoint" => "1024", "items" => "5"),
                            ),
                        ],
                    ],
                ],
            ],
        ];
 
        /** @var \Magento\Config\Model\Config $configModel */
        $configModel = $this->configFactory->create(['data' => $configData]);
        $configModel->save();
    }
 2
Author: Sergey Korzhov, 2020-07-29 12:43:50