Less code more configuration - UltimateModuleCreator/umc-crud GitHub Wiki
Using this module does not mean you will not have to write anymore code. You still have to.
Here is a list of what you usually write and what is covered by this module
| File | Without Umc_Crud | With Umc_Crud |
|---|---|---|
| Intrafaces | ||
| Entity interface (`[Vendor]\[Module]\Api\Data\[Entity]Interface`) | Yes | Yes |
| Entity interface (`[Vendor]\[Module]\Api\Data\[Entity]Interface`) | Yes | Yes |
| Entity search results interface (`[Vendor]\[Module]\Api\Data\[Entity]SearchResultsInterface`) | Maybe | Yes |
| Entity repository interface (`[Vendor]\[Module]\Api\[Entity]RespoitoryInterface`) | Yes | Yes - split into 2 interfaces (Repository and ListRepository)1 |
| Admin blocks | ||
| Admin form "Back" button (`[Vendor]\[Module]\Block\Adminhtml\[Entity]\BackButton`) | Yes | No. Just di.xml configuration |
| Admin form "Reset" button (`[Vendor]\[Module]\Block\Adminhtml\[Entity]\ResetButton`) | Yes | No. Just di.xml configuration |
| Admin form "Delete" button (`[Vendor]\[Module]\Block\Adminhtml\[Entity]\DeleteButton`) | Yes | No. Just di.xml configuration |
| Admin form "Save" button (`[Vendor]\[Module]\Block\Adminhtml\[Entity]\SaveButton`) | Yes | No. Just di.xml configuration |
| Admin controllers | ||
| Delete (`[Vendor]\[Module]\Controller\Adminhtml\[Entity]\Delete`) | Yes | yes but almost empty2 |
| Edit (`[Vendor]\[Module]\Controller\Adminhtml\[Entity]\Edit`) | Yes | yes but almost empty2 |
| Index (`[Vendor]\[Module]\Controller\Adminhtml\[Entity]\Index`) | Yes | yes but almost empty2 |
| InlineEdit (`[Vendor]\[Module]\Controller\Adminhtml\[Entity]\InlineEdit`) | Yes | yes but almost empty2 |
| MassDelete (`[Vendor]\[Module]\Controller\Adminhtml\[Entity]\MassDelete`) | Yes | yes but almost empty2 |
| Save (`[Vendor]\[Module]\Controller\Adminhtml\[Entity]\Save`) | Yes | yes but almost empty2 |
| Image / File uploads (`[Vendor]\[Module]\Controller\Adminhtml\[Entity]\Image\Upload`) - or any other name | Yes | yes but almost empty2 |
| Models | ||
| Data model (`[Vendor]\[Module]\Model\[Entity]`) | Yes | Yes |
| Repository model (`[Vendor]\[Module]\Model\[Entity]Repository`) | Yes | No 3 |
| Resource Models | ||
| Entity resource model (`[Vendor]\[Module]\Model\ResourceModel\[Entity]`) | Yes | Yes, but very small. di.xml configuration is required |
| Entity collection resource model (`[Vendor]\[Module]\Model\ResourceModel\[Entity]\Collection`) | Yes | Yes, but very small. di.xml configuration is required |
| Entity grid collection resource model (`[Vendor]\[Module]\Model\ResourceModel\[Entity]\Grid\Collection`) | Yes | No. di.xml configuration is required |
| Ui Classes | ||
| Form data provider ('[Vendor]\[Module]\Model\[Entity]\DataProvider') | Yes | No. di.xml configuration is required |
| Actions column ('[Vendor]\[Module]\Ui\Component\Listing\[Entity]\ActionsColumn') | Yes | No. di.xml configuration is required |
| Image column | Yes if you have an image upload field | No. di.xml configuration is required |
| Layout files | ||
| Admin index layout file `view/adminhtml/layout/[module]_[entity]_index` | Yes | Yes |
| Admin edit layout file `view/adminhtml/layout/[module]_[entity]_edit` | Yes | Yes |
| Ui Components | ||
| Admin list `view/adminhtml/ui_compoennt/[module]_[entity]_listing` | Yes | Yes |
| Admin edit `view/adminhtml/ui_compoennt/[module]_[entity]_form` | Yes | Yes |
| Configuration files | ||
| etc/di.xml | Yes | Yes |
| etc/adminhtml/di.xml | Yes | Yes |
| etc/adminhtml/routes.xml | Yes | Yes |
| etc/adminhtml/menu.xml | Yes | Yes |
| etc/db_schema.xml | Yes | Yes |
| etc/acl.xml | Yes | Yes |
| etc/module.xml | Yes | Yes |
| Helpers | ||
| Any helper you can thing of | No. You should never create / use helpers | No. You should never create / use helpers |
| Unit tests | ||
| Yes. You should always write unit tests | ||
2 - You need to extend the corresponding controller from the Umc_Crud module and just add this inside it public const ADMIN_RESOURCE = '[id of the acl resource here]';. Some di.xml configuration is required.
3 - Two repository classes that implement the interfaces from 1 will be autogenerated. The only difference is that they are called [Entity]Repo and [Entity]ListRepo instead of EntityRepository.