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:
{
"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.