Как добавить значения по умолчанию для конфигурации системы в magento 2
Как добавить значения по умолчанию для конфигурации системы в magento 2.
Мне нужно создать и назначить значения по умолчанию для конфигурации системы(system.xml ) для моего пользовательского модуля.
Я уже создал системные настройки для своего пользовательского модуля.
В форме пользовательского интерфейса у меня есть поле (загрузчик), а именно небольшое изображение, которое содержит **конфигурация серверной системы, которую я показал на рисунке ниже**.
Для приведенных ниже конфигурация системы
Я предложил установить конфигурацию системы, как показано ниже, используя \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>
2 answers
Вам нужно будет создать значения конфигурации в config.xml , вы можете взять ссылку на это из любого модуля, который добавляет записи в конфигурацию, и использовать его в своем phtml, проверить значение в бд и, если значение недоступно или равно нулю, установить значение из core/config.
Дайте мне знать, если вам тоже нужна ссылка на код, чтобы разобраться в этом.
Значение по умолчанию не работает с массивами, сериализованными в 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();
}