Code generation - magento/magento2-phpstorm-plugin GitHub Wiki
Code generation
Code generation is one of the most wanted features in the Magento community. There is a bunch of existing open-source solutions, however, generating code using the IDE seems to be the most convenient way to go. Therefore several actions were created to help with common Magento 2 customizations. This list will be extended in the future. All templates used for generation can be found and edited in Preferences/Settings | Editor | File and Code Templates. To use this functionality you need to right-click on the module directory (some items are available for other dirs) and select a needed item in the context menu.
New module
New Magento 2 modules can be created from the context menu or by pressing Ctrl(⌘)+N.
New module as a separate project
This should be useful for extension developers. When the project is created, the IDE suggests selecting the PHP version and suggests including the Magento source code to PHP including paths.
Plugin for a class public method
The action creates a plugin class method along with a plugin declaration record in di.xml in the scope of the specified module and area; a plugin class and di.xml are created if needed.
Reference
The action creates a class along with a preference declaration record in di.xml in the scope of the specified module and area.
Observer
New observers can be created from the context menu. Just right-click on the event name and specify the module, area, and observer name.
Block
View Model (class)
GraphQL Resolver
CLI command
CRON group
Controller
CRON job
View Model with layout declaration
The action for adding a view model to a block and a reference block from the context menu.
Override in Theme action
The action for copying a view file to the appropriate place in a custom place.
UI Component Grid
The action for creating a UI Component Grid (Listing).
Action creates the following files:
- Action Controller PHP Class
- menu.xml
- routes.xml
- acl.xml
- Data Provider PHP Class
- Layout file
- UI component file
Example of filling out the form:
Result:
UI Component Form
The action for creating a UI Component Form.
Action creates the following files:
- Buttons PHP Classes
- Save Action Controller PHP Class
- View Action Controller PHP Class
- routes.xml
- acl.xml
- Data Provider PHP Class (or di.xml declaration)
- Layout file
- UI component file
Example of filling out the form:
Result:
Magento Entity (CRUD)
The action for adding the whole infrastructure for CRUD.
Usage
- Create a new module e.g.
Vendor_MyModule
.
- Open the context menu (right-click to the module directory).
Click to
New -> Module File -> Magento 2 Entity
.
- Specify the Entity Name, DB table name, and ID field name. Select the
Create Admin UI Components
checkbox.
- Go to the
Admin UI Components
tab. Check whether all inputs are filled correctly.
- Go to the
ACL
tab. Check inputs here as well.
- Go to the
Menu
tab. Chose the correct parent menu and specify the sort order.
- Go to the
Properties
tab. Add needed properties (Entity ID added by default).
- Click the
Ok
button to get all files generated.
- Check files (e.g data interface)
- Run
php bin/magento setup:upgrade
. A new menu item should be accessible in the admin panel.
- Click on the menu item to get to the newly added listing.
- Click on the
Add New
button to get to the create/edit form.
- Specify data and save the entity
Your entity is ready for extension. Enjoy!
Email templates
The action for adding Email Template files from the context menu.
Web API declaration
Web API interface for service (PHP class) generation
Layout XML file
Added context action for the layout.xml
file generation
Page Types XML file
Crontab XML file
Email Templates XML file
Sections XML file
Fieldset XML file
View XML file
Indexer XML file
Context action for the indexer.xml
file generation
MVIEW XML file
Widget XML file
Extension Attributes XML file
System XML file
Config XML file
WEB API XML file
DI XML file
ACL XML file
Routes XML file
Data Patch with Customer EAV attribute
Data Patch with Category EAV attribute
Data Patch with Product EAV attribute
Readme file
GraphQl schema file
Data Patch
Observer and declaration from the context menu
events.xml
In editor generation of Plugin Methods
New plugin methods can be created from the context menu (generate...) or by pressing Ctrl(⌘)+N.