A Source Model serves to insert values into certain fields like dropdowns, checkboxes, multiselects, radios in the system configuration Magento admin. So not all fields can have a Source Model. Some of the default Source Models are listed below and are located under the /vendor/magento/module-config/Model/Config/Source/ folder :
- Magento\Config\Model\Config\Source\Locale → Locale options
- Magento\Config\Model\Config\Source\Enabledisable → Enable / Disable options
- Magento\Config\Model\Config\Source\Nooptreq → No / Optional / Required options
- Magento\Config\Model\Config\Source\Store → Store options
- Magento\Config\Model\Config\Source\Website → Website options
- Magento\Config\Model\Config\Source\Yesno → Yes / No options
- Magento\Config\Model\Config\Source\Yesno → Yes / No / Specified options
- Magento\Config\Model\Config\Source\Locale\Country → Country options
- Magento\Config\Model\Config\Source\Locale\Currency → Currency options
- Magento\Config\Model\Config\Source\Locale\Timezone → Timezone options
- Magento\Config\Model\Config\Source\Locale\Weekdaycodes → Week Day Codes options
- Magento\Config\Model\Config\Source\Locale\Weekdays → Week Days options
- Magento\Config\Model\Config\Source\Email\Template → Email Template options
Sources:
Avant propos: si vous n’avez pas encore créé de module pour y consigner les spécificités liées à votre projet, il faut en créer un avant de faire ce qui va suivre.
app/code/Vendor/Module/Model/Config/Source/NoPageLayoutUpdate.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php /** * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ /** * Used in creating options for Yes|No config value selection * */ namespace Vendor\Module\Model\Config\Source; class NoPageLayoutUpdate implements \Magento\Framework\Option\ArrayInterface { /** * Options getter * * @return array */ public function toOptionArray() { return [ ['value' => '', 'label' => __('No Layout Update')] ]; } } |
app/code/Vendor/Module/etc/system.xml
hérité de app/code/MGS/ThemeSettings/etc/system.xml
(les 2 fichiers seront mergés) :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?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="themesettings" translate="label" type="text" sortOrder="2" showInDefault="1" showInWebsite="1" showInStore="1"> <group id="category" translate="label" type="text" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1"> <field id="layout" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Default Page Layout</label> <source_model>Vendor\Module\Model\Config\Source\NoPageLayoutUpdate</source_model> </field> </group> </section> </system> </config> |
app/code/Vendor/Module/etc/adminhtml/system.xml
hérité de app/code/MGS/ThemeSettings/etc/adminhtml/system.xml
(les 2 fichiers seront mergés) :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?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="themesettings" translate="label" type="text" sortOrder="2" showInDefault="1" showInWebsite="1" showInStore="1"> <group id="category" translate="label" type="text" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1"> <field id="layout" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Default Page Layout</label> <source_model>Vendor\Module\Model\Config\Source\NoPageLayoutUpdate</source_model> </field> </group> </section> </system> </config> |
On compile le setup:
1 |
$ n98-magerun2 setup:di:compile |