PHPackages                             garvinhicking/gh-validationdummy - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. garvinhicking/gh-validationdummy

ActiveTypo3-cms-extension[Validation &amp; Sanitization](/categories/validation)

garvinhicking/gh-validationdummy
================================

Validation example

0.2.2(1y ago)08MITPHPPHP &gt;= 8.1.0, &lt;= 8.3.99

Since May 29Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/garvinhicking/gh_validationdummy)[ Packagist](https://packagist.org/packages/garvinhicking/gh-validationdummy)[ RSS](/packages/garvinhicking-gh-validationdummy/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (3)Used By (0)

gh\_validationdummy
===================

[](#gh_validationdummy)

Just a dummy to showcase Extbase Validation for CRUD

This shows simple record creation and editing for a simple model ("Person").

There are two fields, "firstName" and "lastName" that are the only editable fields.

There is a third "special" field however. This can be created in the backend only, and is mandatory.

In the frontend editing, that "special" field should never be touchable.

If you simply omit the property in your `` section of the frontend creation/editing part, the validation ("NotEmpty") still kicks in, and will prevent you from persisting or even inspecting any element, where "special" is not set.

If you pass `@IgnoreValidation("person")` (respectively `#[IgnoreValidation(...)]`) to the controller's `updateAction` or `createAction` you would completely disable any validation of the object (not good). Of course, you could validate the object within the controller action completely manually in that case.

If you would use `@Validate(...)` with a custom validation instead, this would always be executed on top of the domain model validation - so you could only add extra validation, and not bypass the existing one.

The solution that this extension show-cases is a "DTO" ("Data transfer object") way. Here, a small variant of the main domain model is created, without the `special` property. It only holds the properties that you really edit on the frontend.

Inside the actions, the DTO is populated with the original domain model input, and before persisting, the real object is retrieved and filled with the data of the DTO.

Even though this might feel like much redundancy, it really helps you to create a distinct model of a frontend-editable domain model. You might even use a DTO as your base, and let the "normal" Domain Model extend from both your DTO and the `AbstractEntity` from extbase, so that only your extbase domain model would hold all the data that is not available to the frontend.

This is just a very quick and dirty example, hope it helps anyone.

How to use
==========

[](#how-to-use)

- Install the extension (i.e. via Packagist `garvinhicking/gh-validationdummy`) or copy+paste it to your `packages` structure (or retrieve via GIT)
- Add the TypoScript template to your root site
- Create two pages like "DTO" and "Validator"
- Place the corresponding "ValidationDummy: DTO" on your "DTO" page, and "ValidationDummy: Validator" on the "Validator" page
- Open the frontend, create data via the links provided of the plugins
- You can also insert records in the backend (inside a SysFolder) (so that you have an initial list view)

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance44

Moderate activity, may be stable

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

712d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/273326?v=4)[Garvin Hicking](/maintainers/garvinhicking)[@garvinhicking](https://github.com/garvinhicking)

---

Top Contributors

[![garvinhicking](https://avatars.githubusercontent.com/u/273326?v=4)](https://github.com/garvinhicking "garvinhicking (10 commits)")

### Embed Badge

![Health badge](/badges/garvinhicking-gh-validationdummy/health.svg)

```
[![Health](https://phpackages.com/badges/garvinhicking-gh-validationdummy/health.svg)](https://phpackages.com/packages/garvinhicking-gh-validationdummy)
```

###  Alternatives

[webmozart/assert

Assertions to validate method input/output with nice error messages.

7.6k894.0M1.2k](/packages/webmozart-assert)[swaggest/json-schema

High definition PHP structures with JSON-schema based validation

48612.5M73](/packages/swaggest-json-schema)[stevebauman/purify

An HTML Purifier / Sanitizer for Laravel

5325.6M19](/packages/stevebauman-purify)[ashallendesign/laravel-config-validator

A package for validating your Laravel app's config.

217905.3k5](/packages/ashallendesign-laravel-config-validator)[crazybooot/base64-validation

Laravel validators for base64 encoded files

1341.9M8](/packages/crazybooot-base64-validation)[brotkrueml/typo3-form-rate-limit

TYPO3 form finisher for rate limiting when sending a form

1157.6k](/packages/brotkrueml-typo3-form-rate-limit)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
