Skip to content

Reference

Page Contents
Cheat sheet The most-used paths, keys, bindings and commands on one page
Grid reference Every key of a grid definition
Form reference Every key of a form definition, the field types, the layout tree
EAV forms Keys specific to EAV forms
Token reference Every design token with its defaults
Configuration reference Every setting with its path
CLI reference Every command with its options
Extension points Every registry, interface and event
ACL resources and events ACL resources, events, cache types, tables, cron
Glossary The words this documentation uses

Option-source aliases

A form field's optionsSource and a grid column's filterOptionsSource take a short alias instead of a class name. Modules bind aliases on OptionSourceRegistry and FilterOptionSourceRegistry in etc/adminhtml/di.xml. Extension points covers how to register your own.

The two registries are not sealed off from each other. OptionSourceResolver::resolveOption() reads the option registry first and falls back to the filter registry, and resolveFilter() reads them in the other order. Every alias in either table below therefore resolves under either key. An alias containing a backslash that neither registry knows is instantiated as a class name instead, and is kept only if it implements OptionSourceInterface or exposes toOptionArray(). A plain alias that neither registry knows throws UnknownAliasException, whose message lists up to twenty of the aliases that are registered.

Near-duplicate aliases resolve to different classes

magento.customer.group is the customer group collection, while magento.customer.group.source is the EAV attribute source. magento.sales.order.status is the config source, while magento.sales.order.status.collection is the resource-model collection. magento.catalog.category.page is the CMS landing-page block attached to a category and not a list of categories. For the root category of a store group, use magento.catalog.root.category. For every category in the tree, use nebula.catalog.category_path.

Option sources

Twenty-six aliases are registered for optionsSource.

Alias Resolves to Options Registered by
magento.store.system Magento\Store\Model\System\Store Websites, store groups and store views as one tree Nebula_Component
magento.tax.class.customer Magento\Tax\Model\TaxClass\Source\Customer Customer tax classes Nebula_Component
magento.tax.class.product Magento\Tax\Model\TaxClass\Source\Product Product tax classes Nebula_Component
magento.tax.rate Magento\Tax\Model\Rate\Source Tax rates Nebula_Component
magento.catalog.attribute.inputtype Magento\Catalog\Model\Product\Attribute\Source\Inputtype Product attribute input types Nebula_Component
magento.catalog.category.page Magento\Catalog\Model\Category\Attribute\Source\Page CMS landing-page blocks attachable to a category Nebula_Component
magento.catalog.root.category Magento\Catalog\Model\Config\Source\Category Root categories Nebula_Component
magento.cms.options Magento\Cms\Ui\Component\Listing\Column\Cms\Options Enabled and Disabled, for CMS records Nebula_Component
magento.cms.page.layout Magento\Cms\Model\Page\Source\PageLayout Page layouts Nebula_Component
magento.customer.group Magento\Customer\Model\ResourceModel\Group\Collection Customer groups, from the collection Nebula_Component
magento.urlrewrite.option Magento\UrlRewrite\Model\OptionProvider URL rewrite redirect types Nebula_Component
magento.locale Magento\Config\Model\Config\Source\Locale Locales Nebula_Component
magento.config.yesno Magento\Config\Model\Config\Source\Yesno Yes and No Nebula_Component
magento.catalog.watermark.position Magento\Catalog\Model\Config\Source\Watermark\Position Watermark positions Nebula_Component
magento.design.robots Magento\Config\Model\Config\Source\Design\Robots Robots meta values Nebula_Component
magento.theme.label Magento\Framework\View\Design\Theme\Label Installed themes Nebula_Component
magento.sales.order.status.collection Magento\Sales\Model\ResourceModel\Order\Status\Collection Order statuses, from the collection Nebula_Component
magento.authorization.role.collection Magento\Authorization\Model\ResourceModel\Role\Grid\Collection Admin user roles Nebula_Component
magento.paypal.settlement.event Magento\Paypal\Model\ResourceModel\Report\Settlement\Options\TransactionEvents PayPal settlement transaction events Nebula_Reports
nebula.store.group Nebula\Store\Model\Source\StoreGroupTree Websites and store groups, stopping at groups Nebula_Store
nebula.store.view Nebula\Theme\Model\Source\StoreView The same tree one rung deeper, with store views as the leaves Nebula_Theme
nebula.search.synonym.scope Nebula\Theme\Model\Source\SynonymScope Search synonym scopes Nebula_Theme
nebula.attribute.set Nebula\Theme\Model\OptionSource\AttributeSet Attribute sets, for "Based On" Nebula_Theme
magento.review.status Nebula\Theme\Model\OptionSource\ReviewStatus Approved, Pending and Not Approved Nebula_Theme
nebula.order.state Nebula\Theme\Model\OptionSource\OrderState Order states, for "Assign to State" Nebula_Theme
magento.inventory.sales_channel.website Magento\InventorySalesAdminUi\Model\OptionSource\WebsiteSource Websites as codes, for stock sales channels Nebula_Theme

Filter option sources

Twenty-three bindings are registered for filterOptionsSource, resolving to twenty-two aliases: magento.directory.country is bound to the same class twice.

Alias Resolves to Options Registered by
magento.store.system Magento\Store\Model\System\Store Websites, store groups and store views as one tree Nebula_Component
magento.config.yesno Magento\Config\Model\Config\Source\Yesno Yes and No Nebula_Component
magento.catalog.attribute.inputtype Magento\Catalog\Model\Product\Attribute\Source\Inputtype Product attribute input types Nebula_Component
magento.catalog.attribute.scopes Magento\Catalog\Model\Attribute\Source\Scopes Attribute scopes Nebula_Component
magento.sales.order.status Magento\Sales\Model\Config\Source\Order\Status Order statuses, from config Nebula_Component
magento.customer.group.source Magento\Customer\Model\Customer\Attribute\Source\Group Customer groups, from the attribute source Nebula_Component
magento.directory.country Magento\Directory\Model\Config\Source\Country Countries Nebula_Component and Nebula_Theme
magento.theme.scope.website Magento\Theme\Model\Scope\WebsiteSource Websites, for design scope Nebula_Component
magento.theme.scope.group Magento\Theme\Model\Scope\GroupSource Store groups, for design scope Nebula_Component
magento.theme.scope.store Magento\Theme\Model\Scope\StoreSource Store views, for design scope Nebula_Component
magento.paypal.settlement.event Magento\Paypal\Model\ResourceModel\Report\Settlement\Options\TransactionEvents PayPal settlement transaction events Nebula_Reports
magento.bulk.description Magento\AsynchronousOperations\Model\BulkDescription\Options Distinct bulk descriptions this administrator has run Nebula_System
magento.bulk.user_type Magento\AsynchronousOperations\Model\BulkUserType\Options Bulk operation user types Nebula_System
magento.bulk.status Magento\AsynchronousOperations\Model\BulkStatus\Options Bulk operation statuses Nebula_System
magento.backup.type Magento\Backup\Model\Grid\Options Backup types Nebula_System
nebula.widget.instance_type Nebula\Theme\Model\Source\WidgetInstanceType Widget instance types Nebula_Theme
magento.review.status Nebula\Theme\Model\OptionSource\ReviewStatus Approved, Pending and Not Approved Nebula_Theme
nebula.catalog.category_path Nebula\Theme\Model\OptionSource\CategoryPathOptions Categories, labelled by full path Nebula_Theme
magento.customer.online.type Magento\Customer\Ui\Component\Listing\Column\Online\Type\Options Visitor and Customer, for Now Online Nebula_Theme
magento.directory.region Magento\InventoryAdminUi\Model\OptionSource\RegionSource Regions and provinces Nebula_Theme
magento.search.store.options Magento\Search\Ui\Component\Listing\Column\Store\Options Store views, for synonym scope Nebula_Theme
magento.search.website.options Magento\Search\Ui\Component\Listing\Column\Website\Options Websites, for synonym scope Nebula_Theme

JSON schemas

The schemas the linter validates against ship in Nebula_Component/schemas/. The ones you write definitions against are grid.schema.json, form.schema.json, eav-form.schema.json and snippet.schema.json; the linter also holds components to component.schema.json, which is covered in Components below. Point your editor at them for completion and inline validation:

.vscode/settings.json
{
  "json.schemas": [
    { "fileMatch": ["**/view/adminhtml/grid/*.json"],    "url": "./vendor/nebula/module-component/schemas/grid.schema.json" },
    { "fileMatch": ["**/view/adminhtml/form/*.json"],    "url": "./vendor/nebula/module-component/schemas/form.schema.json" },
    { "fileMatch": ["**/view/adminhtml/snippet/*.json"], "url": "./vendor/nebula/module-component/schemas/snippet.schema.json" },
    { "fileMatch": ["**/view/adminhtml/component/*.json"], "url": "./vendor/nebula/module-component/schemas/component.schema.json" }
  ]
}

bin/magento nebula:generate:schema-docs renders the schemas as Markdown tables. It has a target for grid, form, EAV form and snippet, but none for component.schema.json, so the component enums below are the only written record of them.

Components

Components live in view/adminhtml/component/<name>.json. They are linted, and have no authoring guide elsewhere in this portal. What follows is the part a reader cannot get from the schema file title alone.

The name is kebab-case and the file spells the same word with an underscore, so column_group.json declares the component column-group. No view/adminhtml/component/*.json file ships in the free tree, so there is no shipped component definition to copy; the Pro content package is where they ship.

Key Definition Values
category Component layout, elements, media, content, navigation, dynamic, storeinfo. Names the component panel section. Omit it for a system-only component.
parents.defaultPolicy, children.defaultPolicy Component allow or deny. Applied to any name not in that policy's allow or deny array.

A component's fields[].type is a closed list of twenty-one values, and it is not the form field-type list. It drops checkbox, email, file and image, and it adds range, url, text-align, link, products, categories, widget and variable. In full: text, textarea, number, range, url, text-align, select, multiselect, toggle, date, datetime, password, hidden, wysiwyg, pagebuilder, color, link, products, categories, widget, variable. The form field types are a separate enum in a separate schema; assuming they match is the usual way a component definition fails to lint.