Как установить значение по умолчанию в 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');
}
Я хочу установить значение по умолчанию для текстового столбца Продолжительность, Эффективная процентная ставка и Специальная Эффективная процентная ставка
Может ли кто-нибудь дать мне совет? Как я могу установить значение по умолчанию для конфигурации таблицы в Magento.
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 / для проверки нашего сериализованного массива.
Ниже приведен код для установки значения да в раскрывающийся файл Да/нет.
В 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>
Образец для нового носителя. Вы можете легко установить значение по умолчанию для всех типов полей
<?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']);