# hyva-themes/module-magento2-admin

> This module aims to make creating grids and forms in the Magento 2 adminhtml area for developers joyful and fast

`composer require hyva-themes/module-magento2-admin`

Canonical URL: https://packagento.com/hyva-themes/module-magento2-admin

## At a glance

- **Vendor**: hyva-themes (https://packagento.com/hyva-themes.md)
- **Latest version**: 1.1.28 — released 2026-06-26
- **Pricing**: Free
- **Package type**: Magento 2 module
- **Status**: active, accepting new buyers

## Installation

Packagento is licence-gated, so even free packages need a licence on a project before Composer can resolve them.

1. **Sign in or create an account** at https://packagento.com/customer/account/.

2. **Add the package to your account.** Open https://packagento.com/hyva-themes/module-magento2-admin and complete the free checkout. A licence is minted automatically.

3. **Create or pick a project, then activate the licence on it.**
   - Projects represent the Magento installs you deploy to. Manage them at https://packagento.com/projects/.
   - Activate the new licence on the project you'll deploy this package to. Activation is what generates the Composer credentials scoped to that project.

4. **Add the project credentials to your Magento codebase.**

   Grab the project's public + private key from https://packagento.com/projects/ (open the project, then its Credentials tab), and add them to `auth.json`:

   ```json
   {
     "http-basic": {
       "packagento.com": {
         "username": "ppk_live_...",
         "password": "psk_live_..."
       }
     }
   }
   ```

   Add the Packagento Composer repository to `composer.json`:

   ```json
   {
     "repositories": [
       { "type": "composer", "url": "https://packagento.com" }
     ]
   }
   ```

5. **Install and apply.**

   ```bash
   composer require hyva-themes/module-magento2-admin:*
   bin/magento setup:upgrade
   bin/magento setup:di:compile
   bin/magento cache:flush
   ```

## What it does

This module aims to make creating grids and forms in the Magento 2 adminhtml area for developers joyful and fast

## README

This module aims to make creating grids and forms in the Magento 2 adminhtml area joyful and fast.    
It does not use any UI components. Status: ![main branch tests](https://github.com/hyva-themes/magento2-hyva-admin/workflows/Hyv%C3%A4%20Admin%20Tests/badge.svg)

> They  came  round  the  corner,  and there was Eeyore's
  house, looking as comfy as anything.  
          "There you are," said Piglet.  
          "Inside as well as outside," said Pooh proudly.  
          Eeyore went inside . . . and came out again.  
          "It's a remarkable thing," he said. "It  is  my  house,
  and  I built it where I said I did, so the wind must have blown
  it here. And the wind blew it right over the wood, and blew  it
  down  here,  and here it is as good as ever. In fact, better in
  places."  
          "Much better," said Pooh and Piglet together.  
          "It just shows what can be  done  by  taking  a  little
  trouble,"  said Eeyore. "Do you see, Pooh? Do you see, Piglet?
  Brains first and then Hard Work. Look at it! That's the way  to
  build a house," said Eeyore proudly.

- Alan Alexander Miln, "The house at Pooh Corner"

### Overview

Hyva_Admin is a Magento 2 module that offers a new way to create admin grids.  
All existing grids and forms are not affected. They remain unchanged.  
Hyva_Admin exists to improve the developer experience while creating new grids.

In the future, Hyva_Admin will support creating forms, too (this [issue](https://github.com/hyva-themes/magento2-hyva-admin/issues/36) tracks progress).


### Relationship with frontend Hyvä-Themes

This module does not require using a Hyva-Theme for a store front. It is an independent module.
It only shares three things with the Hyvä frontend theme:
- the idea that development should be enjoyable
- the framework should support developers instead of creating more work than necessary
- it uses tailwind css and alpinejs under the hood, but you will probably never even notice when using Hyva_Admin

You can install this module and enjoy it without having a Hyvä-Themes license.
That said, I really recommend you get a store front Hyvä license, and make work there enjoyable and fast, too.


### Rationale

When using the Magento 2 UI Components to create admin grids and forms, I always felt like I was dying a bit inside. From my point of view it's an awful system for a number of reasons that I don't want to go into more details about here.
Alternative store fronts that do not use UI components (PWA Studio, Hyva Themes) are great for frontend developers, but (un?)fortunately I mostly do backend work. The UI interfaces I create are mostly for store owners and admins.
 
I desire a way to do my job (which includes building grids and forms) that doesn't feel like I have to fight the framework.  
I want to feel empowered and get work done quickly and efficiently.
After years of bitching about Magento, I was very impressed by the work Willem Wigman has done with the Hyvä frontend theme.
He inspired me to stop complaining and also take matters into my own hands, and finally build the tools I desire.
Hence, Hyva_Admin. 


### Installation

The module can be installed via composer by adding the repository as a source and then requiring it: 

```
composer require hyva-themes/module-magento2-admin
```

If you want to just play around to get a feel for Hyva_Admin grids, you can install a test module that declares an example grid, too:

```
composer require hyva-themes/module-magento2-admin-test
```

#### Requirements

It should work with pretty much any Magento 2 version, as long as the `$escaper` is assigned in templates.


### Quickstart

**Note:** Both an overview with a step by step walkthrough and an API reference can be found in the [docs](https://hyva-themes.github.io/magento2-hyva-admin/) folder.

Once installed, grids can be added to any admin page by adding a bit of layout XML and a grid configuration file.  
The layout XML has to contain two things:

* A `<update handle="hyva_admin_grid"/>` declaration to load alpine.js and tailwind.
* A `Hyva\Admin\Block\Adminhtml\HyvaGrid` block, with name of the grid configuration as a block argument (or as the block name-in-layout).

After that, a grid configuration has to be created in a directory `[Your_Module]/view/adminhtml/hyva-grid`, where the
file names corresponds to the name that was passed to the grid block (with a `.xml` suffix added to the file name).

The grid configuration will need contain a grid source specification. Currently that can be a repository list method, or a
`\Hyva\Admin\Api\HyvaGridArrayProviderInterface` implementation.

With no further configuration, all fields of the provided records are shown as grid columns.
It's then possible to either exclude columns as needed, or, alternatively, specify an include-list for the columns to display.
In many cases the default will be good enough and no further configuration beyond the grid source will be necessary.

Grid row actions, mass actions, paging and filtering can also be configured as needed.

More information can be found in the [Hyva Admin documentation](https://hyva-themes.github.io/magento2-hyva-admin/).


### Stability

The module isn’t feature complete.
However, the API will remain stable, unless some real flaw is discovered.  
New features will be added in a backward compatible manner.  

### Contributions

PR's are very welcome.  
Please submit contributions based on the main branch. Currently, the oldest supported PHP version is 7.4.

#### License

This package is licensed under the **Open Software License (OSL 3.0)**.

* **Copyright:** Copyright © 2020-present Hyvä Themes. All rights reserved.
* **License Text (OSL 3.0):** The full text of the OSL 3.0 license can be found in the `LICENSE.txt` file within this package, and is also available online at [http://opensource.org/licenses/osl-3.0.php](http://opensource.org/licenses/osl-3.0.php).

### Parting words

_(README truncated for .md surface. Full README on https://packagento.com/hyva-themes/module-magento2-admin.)_

## Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### [Unreleased]

[Unreleased]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.23..main

#### Added
- Nothing

#### Changed
- Nothing

#### Removed
- No removals.

### [1.1.23] - 2025-02-06
[1.1.23]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.22..1.1.23
#### Added

- Nothing

#### Changed

- Fixed: Boolean filter behavior in grids with multiple filters (thanks to Andreas von Studnitz)

#### Removed

- Nothing

### [1.1.22] - 2023-12-08
[1.1.22]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.21..1.1.22
#### Added

- Nothing

#### Changed

- Fixed: Ajax Grid: after filtering all mass actions redirect to admin dashboard 

#### Removed

- Nothing


### [1.1.18] - 2022-04-12
[1.1.18]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.17..1.1.18
#### Added

- Nothing

#### Changed

- PHP 8.1 compatibility changes. All changes are backward compatible.

- Dropping PHP 7.3 support

#### Removed

- Nothing

### [1.1.17] - 2022-03-08
[1.1.17]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.16..1.1.17
#### Added
- French Translation  
  Thanks to Frederic Martinez for the [PR](https://github.com/hyva-themes/magento2-hyva-admin/pull/64)!

#### Changed
- Grid Labels are now translated  
  Thanks to Frederic Martinez for the [PR](https://github.com/hyva-themes/magento2-hyva-admin/pull/63)!

#### Removed
 - Nothing

### [1.1.16] - 2021-07-01
[1.1.16]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.15..1.1.16
#### Added
- Support grid column data types `smallint` and `mediumint`

#### Changed
- Bugfix: modules enabled in app/etc/config.php but not installed no longer throw an exception.  
  Thanks to [Mirko Cesaro](https://github.com/hyva-themes/magento2-hyva-admin/issues/53) for reporting!
  
- Bugfix: grid sources with an accessor methods starting with `is` (e.g. `isActive`) no longer always 
  return `null` if the object also implements magic getters.
  
- Bugfix: for ajax grids, grid action URLs with `*` as part of the new path will now resolve to the original route instead of using the ajax route.
  This closes the issue #56.
  
- Use TailwindCSS forms plugin strategy `class`. This will improve compatibility with
  existing Magento forms. Some modules that relied on the automatic form styles resets might need to be updated.
  More information can be found at https://github.com/tailwindlabs/tailwindcss-forms#using-classes-instead-of-element-selectors

#### Removed
- No removals.

### [1.1.15] - 2021-05-26
[1.1.15]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.14..1.1.15
#### Added
- Nothing

#### Changed
- Removed Umlaut from file name in documentation, because it breaks composer package building.  
  Thanks to [Pieter Hoste](https://github.com/hyva-themes/magento2-hyva-admin/issues/50) for letting me know.

#### Removed
- Nothing

### [1.1.14] - 2021-05-14
[1.1.14]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.13..1.1.14
#### Added
- New collection grid source type specific processor interface
  `HyvaGridCollectionProcessorInterface` extending `HyvaGridSourceProcessorInterface`

  If processors implement this interface, an `afterInitSelect` method is called for collections.
  This allows joining fields before the available grid columns are extracted or the search criteria is applied.

- New method `getGridName` on all grid source types.
  This might be handy in plugins.

### [1.1.13] - 2021-05-5
[1.1.13]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.12..1.1.13
No changes, this is a fix for a botched 1.1.12 release.

### [1.1.12] - 2021-05-5
[1.1.12]: https://github.com/hyva-themes/magento2-hyva-admin/compare/1.1.11..1.1.12
#### Added
- New experimental JavaScript events implementation for grid actions.

#### Changed
- Nothing.

_(Changelog truncated for .md surface. Full history on https://packagento.com/hyva-themes/module-magento2-admin.)_

## Recent Versions

| Version | Released |
|---|---|
| 1.1.28 | 2026-06-26 |
| 1.1.27 | 2025-10-23 |
| 1.1.26 | 2025-09-30 |
| 1.1.25 | 2025-09-29 |
| 1.1.24 | 2025-05-26 |
| 1.1.23 | 2025-02-06 |
| 1.1.22 | 2023-12-08 |
| 1.1.21 | 2023-08-31 |
| 1.1.20 | 2023-04-16 |
| 1.1.19 | 2023-04-07 |

Showing 10 of 38 versions. Full release history on https://packagento.com/hyva-themes/module-magento2-admin.

## Dependencies

### Require

| Package | Constraint |
|---|---|
| ext-dom | * |
| laminas/laminas-code | >=3.0.0 |
| magento/framework | >=101.0.0 |
| magento/module-backend | >=101.0.0 |
| php | ^7.3.0\|\|>=8.0 |

## Quality

Latest release (1.1.28) fails the Packagento QA pipeline. Verdicts below are per-cell (Magento line × PHP version) for the matrixed tools, and run-once for the static / security tiers.


### Compatibility

Each Magento line is installed on its supported PHP versions, then the module is built (DI compile + static-content deploy). Cells show passed / failed / untested; staircase gaps render as `–`.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | Pass | Pass | – | – |
| 2.4.8 | – | Pass | Pass | – |
| 2.4.9 | – | – | Pass | Pass |


### Code Quality

Advisory checks against the module's source. Never affect the Compatibility verdict — a phpcs finding can't make a module incompatible.

#### Static Analysis

Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Fail | 245 | 39 errors, 206 warnings (ruleset: Magento2) — 92 auto-fixable with phpcbf |
| PHPMD | Warning | 182 | 182 rule violations (MissingImport:53, UnusedFormalParameter:44, UnusedPrivateMethod:32, IfStatementAssignment:17, UnusedLocalVariable:10) |
| Cpd | Pass | 0 |  |
| Composer validate | Info | 3 | valid; 3 advisory notes (composer validate --strict) |

#### PHPStan

Type-checks the module against a real Magento install. Re-runs per Magento + PHP version because resolvable symbols differ between releases.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | 90 | 90 | – | – |
| 2.4.8 | – | 90 | 90 | – |
| 2.4.9 | – | – | 88 | 88 |


### Tests

Unit and integration suites run per Magento + PHP cell. Test failures speak to the module's behaviour, not its compatibility with a line, so they're reported here separately.

#### Unit Tests

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | – | – |
| 2.4.8 | – | N/A | N/A | – |
| 2.4.9 | – | – | N/A | N/A |


### Security

Dependency-advisory audit (composer audit) plus a source malware scan. A malware detection fails the version outright.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| Composer audit | Pass | 0 |  |
| Malware scan | Pass | 0 |  |

## Licence and pricing

Free. A licence is still minted on checkout and bound to your project for Composer access — no payment step.

Refundable within 14 days of first purchase via https://packagento.com/account/refunds/.

## Install via Claude Code or any MCP client

The Packagento MCP server can run the licence + project + Composer steps above in one tool call:

```
purchase_and_install_packages(
  composer_names=["hyva-themes/module-magento2-admin"],
  project_id="proj_xxx"
)
```

This handles cart, checkout, licence minting, project activation, and writes auth.json credentials. Connect a client with `claude mcp add packagento https://mcp.packagento.com`. Full setup at https://packagento.com/docs/mcp-setup.

## Vendor

hyva-themes is a Magento 2 vendor on Packagento. See https://packagento.com/hyva-themes.md for their full catalogue.

