Joe Scotto
Joe Scotto

Reputation: 10887

Slim framework url as file path

I'm new to using Slim and am trying to create a simple file hosting site. I'm trying to set my current directory via the url using $app->get(). Is there a way where I can have a url such as: site.com/panel/documents/text/word/etc where everything after panel is interpreted as the current path? I currently have this code:

$app->get('/panel/{path}', function ($request, $response) {
    $path = $request->getAttribute('path');

    return $path;
});

The issue is that I'm only able to return the path when only one path is set, I.E. /panel/documents returns documents. If I do something such as /panel/documents/text it will return a not found error. Any help would be great. Thanks!

Upvotes: 2

Views: 1237

Answers (1)

R. Chappell
R. Chappell

Reputation: 1292

Assuming you are using the latest Slim v3, you can use placeholders to achieve your goal as per the documentation: http://www.slimframework.com/docs/objects/router.html#route-placeholders

Look for unlimited optional params

$app->get('/news[/{params:.*}]', function ($request, $response, $args) {
    $params = explode('/', $request->getAttribute('params'));

    // $params is an array of all the optional segments
});

In your case it would be:

$app->get('/panel/{path:.*}', function ($request, $response) {
    $path = $request->getAttribute('path');

    return $path;
});

Upvotes: 1

Related Questions