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


Чтобы создать конфигурацию таблицы в бэкэнде Magento2, мы можем использовать хороший учебник здесь: http://www.ibnab.com/en/blog/magento-2/magento-2-backend-guide-to-create-table-setting-in-the-system-configuration{[7] } или https://magently.com/blog/magento-2-backend-configuration-frontend-model-part-33/

Я прочитал этот учебник в Magento 1 https://www.integer-net.com/how-to-create-tables-in-magento-system-configuration /.

Они создали конфигурацию таблицы со значением по умолчанию. Я знал, что в Magento 1 мы можем установить значение массива по умолчанию для таблицы в config.xml следующим образом:

<default>
    <namespace_module>
        <settings>
            <shipping_costs>a:1:{s:18:"_1425462208957_957";a:2:{s:10:"from_price";s:1:"0";s:4:"cost";s:4:"4.90";}}</shipping_costs>
        </setting>
    </namespace_module>
</default>

Я пытаюсь поместить тот же массив выше из Magento 1 в config.xml файл на Magento 2, но он вообще не работает.

Вот мой пример:

System.xml :

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
    <tab id="media" translate="label" sortOrder="300">
        <label>MEDIA</label>
    </tab>
    <section id="payment" translate="label" type="text" sortOrder="402" showInDefault="1" showInWebsite="1" showInStore="1">
        <label>Settings</label>
        <tab>media</tab>            
        <group id="setting" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
            <field id="interest_rates" translate="label comment" sortOrder="13" showInDefault="1" showInWebsite="0" showInStore="0">
                <label>Interest Rates</label>
                <frontend_model>Company\Module\Block\Adminhtml\System\Config\Fieldset\InterestRates</frontend_model>
                <backend_model>Magento\Config\Model\Config\Backend\Serialized\ArraySerialized</backend_model>                    
            </field>
        </group>
    </section>  
<system>    

Интересующие файлы

protected function _prepareToRender()
{
    $this->addColumn('duration', ['label' => __('Duration'), 'style' => 'width:60px']);
    $this->addColumn('effective_interest_rate', ['label' => __('Effective Interest Rate'), 'style' => 'width:170px']);
    $this->addColumn('special_effective_interest_rate', ['label' => __('Special Effective Interest Rate'), 'style' => 'width:170px']);
    $this->_addAfter = false;
    $this->_addButtonLabel = __('Add Interest Rate');
}

Демонстрационная картинка enter image description here

Я хочу установить значение по умолчанию для текстового столбца Продолжительность, Эффективная процентная ставка и Специальная Эффективная процентная ставка

Может ли кто-нибудь дать мне совет? Как я могу установить значение по умолчанию для конфигурации таблицы в Magento.

Author: Nguyễn Hồng Quang, 2017-01-13

3 answers

В вашем случае вы можете следовать тому же пути Magento 1, вам нужно ввести там сериализованный массив. По моему опыту, лучший способ создать этот сериализованный массив - заполнить данные по умолчанию в серверной части, сохранить их, а затем скопировать значение из таблицы core_config_data в config.xml.

Например, xml конфигурации:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <payment>
            <setting>
                <interest_rates>a:4:{s:18:"_1477023122716_716";a:3:{s:4:"from";s:1:"0";s:2:"to";s:5:"10000";s:3:"fee";s:3:"324";}s:18:"_1477023174715_715";a:3:{s:4:"from";s:5:"10001";s:2:"to";s:5:"30000";s:3:"fee";s:3:"432";}s:18:"_1477023192619_619";a:3:{s:4:"from";s:5:"30001";s:2:"to";s:6:"100000";s:3:"fee";s:3:"648";}s:18:"_1477023219483_483";a:3:{s:4:"from";s:6:"100001";s:2:"to";s:6:"300000";s:3:"fee";s:4:"1080";}}</interest_rates>
            </setting>
        </payment>
    </default>
</config>

Мы можем использовать этот сайт http://www.unserialize.com / для проверки нашего сериализованного массива.

 3
Author: Khoa TruongDinh, 2017-01-15 01:38:25

Ниже приведен код для установки значения да в раскрывающийся файл Да/нет.

В config.xml файл,

<?xml version="1.0"?>


<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <payment>
            <setting>
                <interest_rates>100</interest_rates>
            </setting>
        </payment>
    </default>
</config>
 0
Author: Rakesh Jesadiya, 2017-01-13 10:34:40

Образец для нового носителя. Вы можете легко установить значение по умолчанию для всех типов полей

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <carriers>
            <poczta_shipment>
                <active>1</active>
                <model>Your\PathTo\Model\Carrier</model>
                <name>Poczta Polska</name>
                <price>15.00</price>
                <title>Poczta</title>
                <tracking_url>url_for_tracking_code</tracking_url>
            </poczta_shipment>
        </carriers>
    </default>
</config>

РЕДАКТИРОВАТЬ:

Не можете ли вы использовать что-то вроде этого:

    $this->addColumn('duration', ['label' => __('Duration'), 'style' => 'width:60px', 'default' => 'xxx']);

Или

    $this->addColumn('duration', ['label' => __('Duration'), 'style' => 'width:60px', 'value' => 'xxx']);
 0
Author: Konrad Siamro, 2017-01-16 08:26:21