PHPackages                             formatd/useractionhistory - 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. formatd/useractionhistory

ActiveNeos-package[Utility &amp; Helpers](/categories/utility)

formatd/useractionhistory
=========================

A request history for Neos FLow applications.

v1.0.0(7y ago)1186MITPHP

Since Aug 10Pushed 7y agoCompare

[ Source](https://github.com/Format-D/FormatD.UserActionHistory)[ Packagist](https://packagist.org/packages/formatd/useractionhistory)[ RSS](/packages/formatd-useractionhistory/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

FormatD.UserActionHistory
=========================

[](#formatduseractionhistory)

A request history for Neos FLow applications. This package was mainly build for CRUD like backend interfaces but can be used for a lot of use cases.

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

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

It provides a session scope object with the possibility to add requests into a history stack. With this history it is possible for example to handle back-links or redirects back to the previous page after some action.

Adding Entries
--------------

[](#adding-entries)

Inject the UserActionHistory into your controller and add entries like that. You should not add unsafe requests (e.g. POST) to the history because if you redirect to them later it will have unexpected results.

```
    $this->userActionHistory->addEntry('Edit Backend-User: ' . $user->getName(), $this->request, $user);

```

Redirecting to previous request
-------------------------------

[](#redirecting-to-previous-request)

If you want to redirect to the previous request for example in an updateAction you can do the following. Notice that you can provide action patterns to skip (for example if you do not want to redirect to the editAction but to the request previous to that).

```
    if ($lastRequest = $this->userActionHistory->getLastActionRequest('UserManagement->edit')) {
        $this->redirectToRequest($lastRequest);
    } else {
        $this->redirect('index');
    }

```

Displaying a linked list of history items
-----------------------------------------

[](#displaying-a-linked-list-of-history-items)

If you want to build a menu of your last visited pages (or last edited records in a CRUD application) you would to it like that.

In Controller:

```
    $this->view->assign('userActionHistoryEntries', $this->userActionHistory->getLastEntries(15, '*->index'));

```

In Template:

```

                    {entry.description}

```

(Don't forget to make the HistoryController accessable in your routes configuration and if necessary in your policy configuration)

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity62

Established project with proven stability

 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

Unknown

Total

1

Last Release

2834d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bb327c5b80466d2d0236e188879eb7bfefe44330e56fe7cc27b5417a5b9689ea?d=identicon)[formatd](/maintainers/formatd)

---

Top Contributors

[![bweinzierl](https://avatars.githubusercontent.com/u/30659291?v=4)](https://github.com/bweinzierl "bweinzierl (1 commits)")

### Embed Badge

![Health badge](/badges/formatd-useractionhistory/health.svg)

```
[![Health](https://phpackages.com/badges/formatd-useractionhistory/health.svg)](https://phpackages.com/packages/formatd-useractionhistory)
```

###  Alternatives

[neos/eel

The Embedded Expression Language (Eel) is a building block for creating Domain Specific Languages

122.0M27](/packages/neos-eel)[neos/form

Extensible and flexible API for building web forms

18853.0k40](/packages/neos-form)[neos/fusion-form

Fusion Form

19724.3k31](/packages/neos-fusion-form)[ttree/scheduler

Simple task scheduler for Neos Flow Framework

21108.8k1](/packages/ttree-scheduler)[avency/neos-vardump

Neos VarDump Package

147.1k](/packages/avency-neos-vardump)[flowpack/task

A Task scheduler for Neos Flow

1136.3k1](/packages/flowpack-task)

PHPackages © 2026

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