Skip to content

Code generation

vitaliy edited this page Dec 15, 2022 · 1 revision

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.

Clone this wiki locally