Slim 3直接访问文件

时间:2016-06-02 09:12:12

标签: php slim slim-3

我想创建一个直接访问文档的路径。 例如,我想通过domain/file/document.pdf访问domain/doc

我试过了:

$app->get('/docs/v1', function ($request, $response){
    $this->view->render( $response, '/docs/document.pdf');
});

但它不起作用。我也在官方文件上看到了这个:

$app = new \Slim\App();
$app->get('/hello', function ($req, $res) {
    $this['view']->display('profile.html', [
        'name' => 'Josh',
        'url' => 'https://joshlockhart.com'
    ]);
});

但显示功能不存在。

Fatal error: Call to undefined method Slim\Views\PhpRenderer::display() 

也许我错过了什么,我不知道,我在文档中找不到任何其他内容。

谢谢!

1 个答案:

答案 0 :(得分:1)

这里有几点:

1)在Slim v3中,“$ this ['view']”通常指向你的Twig渲染器。所以你试图调用一个Twig渲染器,这可能不是你想要做的事情。

2)调用Twig渲染器并返回其输出的正确语法是

return $this->view->render ($response, 'yourTemplate.twig', [ ... array of parameters goes here ...]);

3)至于直接访问文档(我以前从未这样做过,所以我的回答可能是错误的),你可能想要像这样重定向到文档本身:

return $response->withRedirect ((string)($request->getUri()->withPath('path/to/document')));

让浏览器处理如何处理该文档类型。

希望这有帮助。