Regex for all routes plus index/home page?


#1

Hello,

I’m building a simple 3 page site with Slim. Due to the simplicity of the app, I want just one route for all pages.

I think I am close with this:

$app->get('/{path:route1|route2|route3}', function($request, $response, $args) {
    //$route = $args['route'];
    return $this->view->render($response, 'home.phtml'); // This change depending on route.
})->setName('all');

I am able to access /route1, /route2 and /route3.

How can include a match for the root homepage (i.e., no route params)?

Thanks!


#2

This appears to work:

$controller = function($request, $response, $args) {
	return $this->view->render($response, 'home.phtml');
};

$app->get('/', $controller)->setName('home');
$app->get('/{path:route1|route2|route3}/', $controller)->setName('page');

Is there a more succinct/better/shorter way of writing that?


#3

Try this:

    $app->get("/", function ($request, $response, $args) {
        $response->write("Home page");
        return $response;
    });

    $app->get("/{path:.*}", function ($request, $response, $args) {
        $path = $args['path'];
        $response->write("Page for: " . htmlentities($path));
        return $response;
    });

#4

Cool, thanks @akrabat, i really appreciate the help! :slight_smile: