netresearch / config-fields-m2

netresearch/config-fields-m2

A collection of custom config types for Magento 2 system configuration development.

  • Max Melzer
magento2-module Compatibility: 2.4.8-2.4.9 Code Quality: Fail Tests: N/A Security: Pass OSL-3.0

Custom Config Fields for Magento 2

No more fiddly "Yes/No" dropdowns in your configuration.

This Magento 2 extension offers a selection of custom "Field Types" and "Frontend Models"
for use in Magento 2 extensions with a system configuration section.

Features

Custom field types

  • Checkboxset: Functionally equivalent to native Magento field type multiselect
  • Radioset: Functionally equivalent to native Magento field type select
  • Checkbox: Functionally equivalent to native Magento field type select with YesNo source model
  • Toggle: Same as "Checkbox", but with special styling
  • TimeWithMinutePrecision: Works like the Magento field type time but hides the 'seconds' selection.

Custom frontend model blocks

  • InfoBox: A customizable information section for your extension

Installation via composer

Requires PHP 8.3, 8.4 or 8.5 and Magento 2.4.8 or 2.4.9.

composer require netresearch/config-fields-m2:*

Usage

In your Magento 2 extension's etc/adminhtml/system.xml, enter the class name of one
of the Types at Netresearch\ConfigFields\Model\Type.

For example:

<field id="logging"
       type="Netresearch\ConfigFields\Model\Type\Checkbox">
    <label>Logging</label>
    <button_label>Record messages to Magento logs</button_label>
    <comment>You must have global logging activated for this to work.</comment>
</field>
<field id="loglevel" 
       type="Netresearch\ConfigFields\Model\Type\Radioset">
    <label>Logging Level</label>
    <depends>
        <field id="logging">1</field>
    </depends>
    <source_model>Some\Module\Model\Config\Source\LogLevel</source_model>
    <comment>The log level Debug may result in very large log files.</comment>
</field>

Custom frontend model blocks may use additional configuration values transmitted via <attribute> nodes:

For example:

<field id="plugin-info">
    <frontend_model>Netresearch\ConfigTypes\Block\InfoBox</frontend_model>
    <attribute type="logo">Some_Module::images/logo.svg</attribute>
    <attribute type="body_template">Some_Module::system/config/infoBoxBody.phtml</attribute>
    <attribute type="header_template">Some_Module::system/config/infoBoxHeader.phtml</attribute>
    <attribute type="view_model">Some\Module\ViewModel\Adminhtml\System\InfoBox</attribute>
    <attribute type="background">#ffcc01</attribute>
</field>

The available attributes are documented inside the Block source code file.

Support & Issues

This extension is provided "as is", the author does not offer or promise any support.
However, feel free to open a GitHub issue for any problems you encounter.

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.

1.4.1

Changed

  • Use tilde version range for PHP requirement to match Magento framework convention.

1.4.0

Added

  • Support for Magento 2.4.9
  • Support for PHP 8.5

Removed

  • Support for PHP 7.2, 8.1 and 8.2
  • Support for Magento 2.4.4, 2.4.5, 2.4.6 and 2.4.7

1.3.0

Added

  • Support for Magento 2.4.4
  • Support for PHP 8.1

1.2.4

Fixed

  • add item marker styling for nested lists in info box

1.2.3

Fixed

  • allow empty info box view model

Changed

  • info box default size

1.2.2

Fixed

  • allow virtual types as info box view model

1.2.1

Fixed

  • removed unused method argument

1.2.0

Removed

  • Support for Magento 2.2 and below
  • Support for PHP 7.0

Added

  • Support for Magento 2.4

1.1.1

Fixed

  • Checkbox sets and radio sets are now correctly disabled if "Use Default" is checked
  • Info box default styling modernized

1.1.0

Fixed

  • Fixed Markup of InfoBox to be valid HTML

Added

  • New ModalGroup frontend model (experimental)
Versions
Version Stability QA Status Compatibility Released
1.4.1 stable Fail Magento 2.4.8-2.4.9 Details 2026-06-03 09:18:20
1.4.0 stable Not tested Not yet tested Details 2026-06-01 11:56:20
1.3.0 stable Not tested Not yet tested Details 2022-04-26 09:53:29
1.2.4 stable Not tested Not yet tested Details 2021-03-04 19:01:36
1.2.3 stable Not tested Not yet tested Details 2020-10-15 11:40:19
1.2.2 stable Not tested Not yet tested Details 2020-09-10 08:49:58
1.2.1 stable Not tested Not yet tested Details 2020-09-01 11:37:33
1.2.0 stable Not tested Not yet tested Details 2020-08-19 11:59:15
1.1.1 stable Not tested Not yet tested Details 2020-03-17 16:42:01
1.1.0 stable Not tested Not yet tested Details 2019-09-27 08:36:39
1.0.1 stable Not tested Not yet tested Details 2019-04-29 15:18:19
1.0.0 stable Not tested Not yet tested Details 2019-03-13 12:11:25

Requires 4

Package Constraint
magento/framework ^103.0.8
magento/module-backend ^102.0.8
magento/module-config ^101.2.8
php ~8.3.0||~8.4.0||~8.5.0

Compatibility

Each Magento release line is installed on its supported PHP versions, then the module is built (DI compilation + static-content deploy) and its unit and integration suites are run. The matrix shows the lines and PHP versions the module is confirmed to install and run on. Code-quality results further down (phpstan, phpcs, …) are reported separately and never affect compatibility.

Compatibility matrix (Magento × PHP)
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 not tested not tested
2.4.8 Pass Pass
2.4.9 Pass Pass

Code Quality

Advisory checks against the module's source. Static analysis runs once across the whole module; PHPStan re-runs per Magento + PHP version because resolvable symbols differ between releases. These NEVER affect the Compatibility badge. A phpcs finding can't make a module incompatible.

Static analysis

Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.

Static analysis results
Tool Status Findings Summary
PHPCS Warning 7 7 warnings (ruleset: Magento2) — 6 auto-fixable with phpcbf
PHPMD Pass 0
Cpd Pass 0
Composer validate Info 1 valid; 1 advisory note (composer validate --strict)

PHPStan

Type-checks the module's PHP against a real Magento install at the configured gate level. Re-runs per Magento and PHP version because resolvable symbols differ between releases.

PHPStan results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 Error Error
2.4.8 1 1
2.4.9 1 1

Tests

Unit and integration suites, run for each applicable Magento and PHP version. A test failure speaks to the module's behaviour, not its compatibility with a Magento line, so it is reported here separately and never reddens the compatibility matrix.

Unit tests

Unit tests results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 N/A N/A
2.4.8 N/A N/A
2.4.9 N/A N/A

Integration tests

Integration tests results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 N/A N/A
2.4.8 N/A N/A
2.4.9 N/A N/A

Security

Security checks run directly against the module: an audit of its declared dependencies for known vulnerabilities (composer audit) and a scan of its source for malware and web-shell signatures. Each runs once. A malware detection fails the version outright.

Security results
Tool Status Findings Summary
Composer audit Pass 0
Malware scan Pass 0
License
OSL-3.0
Authors

More from netresearch

View vendor
Make it pay

Turn an existing module into recurring revenue.

If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.