Create versions within contao with ease and prevent entities from being purged by fromTable name. Also usable in frontend.

2.4.1 2023-10-24 12:03 UTC

This package is auto-updated.

Last update: 2024-05-24 13:22:54 UTC


This bundle enhances the contao version entity with persistent tables options and helper methods.


  • Add fromTable names to huh_versions.persistent_tables that should persist within tl_version forever or a custom time frame.
  • Use the VersionModel to find tl_version models

Register persistent tables

To make your entities from a given fromTable persist add the table name to the huh_versions.persistent_tables within your project configuration (typical config/config.yml).

# config/config.yml
    - tl_my_custom_entity
    - tl_keep_forever

Create a new version entry

Instead of using the versions class direct, you can use the VersionControl service instead.

use Contao\FrontendUser;
use Contao\Versions;
use HeimrichHannot\VersionsBundle\Version\VersionControl;

class MyCustomEntity 
    /** @var VersionControl */
    private $versionControl;

    protected function createVersion(int $id, FrontendUser $member): void
        // Simple call
        $this->versionControl->createVersion('tl_my_custom_entity', $id);
        // Pass additional options
        $this->versionControl->createVersion('tl_my_custom_entity', $id, [
            'hideUser' => false,
            'additionalData' => [
                'memberid' => $member->id,
                'memberusername' => $member->username,
                'username' => 'FrontendUser',
                'userid' => 0,
            'instance' => new Versions('tl_my_custom_entity', $id),

VersionControl::createVersion options:

  • hideUser: (bool) Don't add user to version log entry. Default false
  • additionalData: (array|null) Pass data that should be stored within the log entry. The array keys must be existing database column names. Default null
  • instance: (Version|null)Pass a custom Versions instance instead of the default one. Default null

Configuration reference

# Default configuration for extension with alias: "huh_versions"

  # Set table names that should be persist within tl_versions.

    # Examples:
    - tl_content
    - tl_my_custom_entity

  # Set the time period persistent table versions should be kept in version table. Set to 0 for forever.
  persistent_version_period: ~ # Example: 7776000