Routing in Contao 4
für Entwickler
Einstieg in das Routing Konzept für Umsteiger von Contao 3
Bonus 2 - Problem Trailing Slash am Ende eines optionalen Routing Pfades
Glen Langer
Version: 1.0.0 vom 02.02.2018
Worum geht es?
- Problem:
Trailing Slash am Ende eines optionalen Routing Pfades:
404 not found - Lösung:
Trailing Slash entfernen durch eine weitere Route
routing.yml
für die remove_trailing_slash Route
In dem folgenden Beispiel ist ein Ausschnitt der routing.yml aus der Demo zu sehen:
routing.yml für die FE Route
frontend_demo_remove_trailing_slash:
path: /routingapp_fe/demo/{url}
defaults:
_controller: BugBusterRoutingappBundle:Frontend:removeTrailingSlash
_scope: frontend
_token_check: false
requirements:
url: .*/$
methods: [GET]
Einige Erläuterungen
- Die Route muss als letzte definiert werden in der routing.yml
- path:
optionaler Teil {url} erhält alle Angaben nach statischem Anteil - requirements:
optionaler Teil {url} muss enden mit einen Slash - methods:
Route greift nur bei Parameter über GET-Methode
Source removeTrailingSlashAction
use Symfony\Component\HttpFoundation\Request;
/**
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function removeTrailingSlashAction(Request $request)
{
$pathInfo = $request->getPathInfo();
$requestUri = $request->getRequestUri();
$url = str_replace($pathInfo, rtrim($pathInfo, ' /'), $requestUri);
return $this->redirect($url, 301);
}
Bundle Demo Sourcecode
Auf GitHub
- Version 1.0.0: Entspricht dem Stand zum Zeitpunkt des Contao Nordtag Vortrages
- Version 2.0.0: Routing ohne Annotations und Entfernung des Trailing Slashes
Happy Coding!
Aktuelle Version dieser Folien auf: docs.contao.ninja
(auch als PDF und später auch als Video)