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

BugBuster1701/contao-routing-app

Happy Coding!

Contao Ninja

 

Aktuelle Version dieser Folien auf: docs.contao.ninja

(auch als PDF und später auch als Video)