PHPackages                             calien/persisted-sanitized-routing - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. calien/persisted-sanitized-routing

Abandoned → [calien/extended-routing](/?search=calien%2Fextended-routing)ArchivedTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

calien/persisted-sanitized-routing
==================================

Persisted Sanitized Pattern Routing for TYPO3

1.0.4(4y ago)12.4k[2 issues](https://github.com/calien666/persisted-sanitized-routing/issues)MITPHPPHP &gt;=7.2

Since Nov 3Pushed 4y ago1 watchersCompare

[ Source](https://github.com/calien666/persisted-sanitized-routing)[ Packagist](https://packagist.org/packages/calien/persisted-sanitized-routing)[ RSS](/packages/calien-persisted-sanitized-routing/feed)WikiDiscussions main Synced 3w ago

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

Persisted sanitized pattern mapping
===================================

[](#persisted-sanitized-pattern-mapping)

WARNING
-------

[](#warning)

This package is abandoned. Please use instead. All features of this project are included there, too.

What does it do?
----------------

[](#what-does-it-do)

Enables the possibility generating sanitized URL parts from persisted patterns. The default PersistedPatternAspect takes e.g. database values and uses them "as they are", including umlauts, special characters and spaces, which will return them into your url and result in unexpected behaviours.

This PersistedSanitizedRoutingAspect encodes and decodes the database part and will make better readable URL parts.

How does it work?
-----------------

[](#how-does-it-work)

Adds a new routing aspect extending the PersistedPatternMapper from TYPO3 core with sanitized URL parts.

```
aspects:
  country:
    type: PersistedSanitizedPatternMapper
    tableName: static_countries
    routeFieldPattern: '^(.*)-(?P\d+)$'
    routeFieldResult: '{cn_short_de|sanitized}-{uid}'
    localeMap:
      - locale: 'de_*'
        field: cn_short_de
      - locale: 'en_*'
        field: cn_short_en
  territory:
    type: PersistedSanitizedPatternMapper
    tableName: static_territories
    routeFieldPattern: '^(.*)-(?P\d+)$'
    routeFieldResult: '{tr_name_de|sanitized}-{uid}'
    localeMap:
      - locale: 'de_*'
        field: tr_name_de
      - locale: 'en_*'
        field: tr_name_en
```

As you can see, localization is respected, if needed.

Installation
------------

[](#installation)

Only install the extension and configure your persisted pattern mappers as described above fitting your needs. The |sanitized part will respect the field you want to sanitize.

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

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 ~39 days

Total

5

Last Release

1549d ago

PHP version history (2 changes)1.0.0PHP &gt;=7.3

1.0.4PHP &gt;=7.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/1a1ddeb615ab1289506094f767ffacee7e1deaa6c914527b116cf88fcbe62e68?d=identicon)[calien666](/maintainers/calien666)

---

Top Contributors

[![calien666](https://avatars.githubusercontent.com/u/11405116?v=4)](https://github.com/calien666 "calien666 (3 commits)")

---

Tags

routingtypo3

### Embed Badge

![Health badge](/badges/calien-persisted-sanitized-routing/health.svg)

```
[![Health](https://phpackages.com/badges/calien-persisted-sanitized-routing/health.svg)](https://phpackages.com/packages/calien-persisted-sanitized-routing)
```

###  Alternatives

[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

40529.5k](/packages/wazum-sluggi)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[typo3/cms-styleguide

TYPO3 extension to showcase TYPO3 Backend capabilities

106760.3k33](/packages/typo3-cms-styleguide)[jweiland/events2

Events 2 - Create single and recurring events

2166.7k3](/packages/jweiland-events2)[in2code/lux

Living User eXperience - LUX - the Marketing Automation tool for TYPO3.

2158.6k1](/packages/in2code-lux)[t3sbs/t3sbootstrap

Startup extension to use bootstrap 5 classes, components and more out of the box. Example and info: \[www.t3sbootstrap.de\](https://www.t3sbootstrap.de)

2416.4k](/packages/t3sbs-t3sbootstrap)

PHPackages © 2026

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