ds-easy/typo3-routes

Easy TYPO3 Routes is inspired by Symfony’s routing mechanism. Define a page by creating a controller, passing all relevant data through a PHP attribute, and creating a corresponding template.

Maintainers

Package info

github.com/infinity-plus-1/Easy-TYPO3-Routes

Type:typo3-cms-extension

pkg:composer/ds-easy/typo3-routes

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.1.1 2026-02-11 23:47 UTC

This package is auto-updated.

Last update: 2026-04-12 11:17:46 UTC


README

Easy TYPO3 Routes is inspired by Symfony's routing mechanism. Define pages by creating a controller, passing all relevant data through PHP attributes, and adding a corresponding template.

TYPO3 v13 License

🚀 Quick Start

composer req ds-easy/typo3-routes

Create a controller in EXTENSION_FOLDER/YOUR_EXTENSION/Classes/Controller/YourRouteController.php.

Define a class and extend the EasyController:

<?php

namespace Vendor\Extension\Controller;

use Ds\Easy\Attribute\Route;
use Ds\Easy\Controller\EasyController;
use Psr\Http\Message\ResponseInterface;

class DemoController extends EasyController
{

}

Write a method and use the route attribute above:

#[Route('/path/to/your/page', format: 'html')]
public function showPage(): ?ResponseInterface
{
    return $this->render('EXT:extension/Resources/Private/PageView/Pages/EasyDemos/Demo.html', partialRootPaths: ['EXT:extension/Resources/Private/PageView/Partials']);
}

Return a response by calling Easy's render method.

Full minimal example:

<?php

namespace Vendor\Extension\Controller;

use Ds\Easy\Attribute\Route;
use Ds\Easy\Controller\EasyController;
use Psr\Http\Message\ResponseInterface;

class DemoController extends EasyController
{

    #[Route('/path/to/your/page', format: 'html')]
    public function showPage(): ?ResponseInterface
    {
        return $this->render('EXT:extension/Resources/Private/PageView/Pages/EasyDemos/Demo.html', partialRootPaths: ['EXT:extension/Resources/Private/PageView/Partials']);
    }
}

Important: Due to TYPO3’s architecture, the page must exist in the page tree and match the route path. Otherwise, a 404 exception will be thrown. You can bypass this requirement by setting the bypass404 attribute to true.

Clear the caches and Easy Routes will cache the route afterwards:

typo3 cache:flush

For in-depth explanations and examples, visit the documentation.

Full documentation and examples:

Doc

✨ Features

  • Symfony-like routing attributes in TYPO3 v13
  • Supports most relevant response types
  • Many built-in utility methods

📦 Installation & Usage

  1. composer require ds-easy/typo3-routes
  2. Check if the extension is activated in TYPO3 Backend
  3. Create controllers extending the EasyController
  4. Define methods with #[Route] attributes
  5. Create the page in the backend

Details → Documentation

🤝 Contributing

Issues & PRs: GitHub Repository

📄 License

GPL-2.0-or-later LICENSE