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.
Package info
github.com/infinity-plus-1/Easy-TYPO3-Routes
Type:typo3-cms-extension
pkg:composer/ds-easy/typo3-routes
Requires
- php: ^8.2
- typo3/cms-core: ^13.4
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.
🚀 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:
✨ Features
- Symfony-like routing attributes in TYPO3 v13
- Supports most relevant response types
- Many built-in utility methods
📦 Installation & Usage
composer require ds-easy/typo3-routes- Check if the extension is activated in TYPO3 Backend
- Create controllers extending the
EasyController - Define methods with
#[Route]attributes - Create the page in the backend
Details → Documentation
🤝 Contributing
Issues & PRs: GitHub Repository