Admin Basics
- Controllers all extend
Magento\Backend\App\Action
(which extends Magento\Framework\App\Action\Action
)
- This provides secret key processing and ACLs
- Grids are UiComponents
- Forms also use UiComponents
- Stores Config exists to save configuration and can be set at any scope
- Developer level config should be in XML
Routing
etc/adminhtml/menu.xml
| config/
menu/
add/
@id - unique, convention is VendorName_Module::description
@title - text to be shown
@module - VenorName_Module
@sortOrder - numeric sorting, lower numbers come first
@parent - the @id of another menu item
@action - vendor_module/action
@resource - for ACLs
|
ACLs
etc/acl.xml
| config/
acl/
resources/
resource/ - multiple nested elements for hierarchy
@id - convention is VendorName_Module::description
@title
|
System Configuration
etc/adminhtml/system.xml
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
27
28
29
30
31
32
33
34
35
36
37 | config/
system/
tab/
@id
@translate
@sortOrder
section/
@id
@translate
@sortOrder
@showInDefault
@showInWebsite
@showInStore
class/
label/
tab/
resource/
group/
@id
@translate
@type
@sortOrder
@showInDefault
@showInWebsite
@showInStore
label/
field/
@id
@translate
@type
@sortOrder
@showInDefault
@showInWebsite
@showInStore
label/
comment/
source_model/
|
Grids
- Render a list of entity records
- Allows for sorting, filtering and searching
- Allows for actions on a group of records
view/adminhtml/ui_component/cms_block_form.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | /form/
argument/
@name - data
@xsi:type - array
item/
@name - js_config
item/
@name - provider
settings/
buttons/
button/
@name
@class
namespace/
dataScope/
deps/
dataSource/
fieldset/
field/
|
Listing
- Is the analog to Grid widgets
- Listings provide Paging, Filters and Columns
- Works with Collections
- Uses the
Magento\Ui\Components\Listing
class
- Uses the
templates/listing/default
Data arguments
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | argument/@name=data
item/
@name=js_config
@xsi:type=array
item/
@name=provider
@xsi:type=string
(data source here)
item/
@name=deps
@xsi:type=string
(data source here)
item/
@name=buttons
@xsi:type=array
item/
@name=add
@xsi:type=array
item/
@name=name
@name=label
@name=class
@name=url
|
Filters
- Uses the
Magento\Ui\Components\Filters
class
- Uses the
Magento_UI\js\grid/filters/filters
UiComponent
DataSource
- A UiComponent that provides data to others
- Doesn't contain data - that's handled by the DataProvider