Slim 3 直接访问一个文件
Slim 3 direct access to a file
我想创建一个直接访问文档的路径。
例如,我想通过 domain/doc
.
访问 domain/file/document.pdf
我试过这个:
$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) 在 Slim v3 中,“$this['view']”通常指向您的 Twig 渲染器。所以你试图调用一个 Twig 渲染器,这可能不是你想要在这种情况下做的事情。
2) 调用 Twig 渲染器和 return 它的输出的正确语法是
return $this->view->render ($response, 'yourTemplate.twig', [ ... array of parameters goes here ...]);
3) 至于直接访问文档(我以前从未这样做过,所以我的回答可能是错误的),你可能想像这样重定向到文档本身:
return $response->withRedirect ((string)($request->getUri()->withPath('path/to/document')));
让浏览器处理如何处理该文档类型。
希望对您有所帮助。
我想创建一个直接访问文档的路径。
例如,我想通过 domain/doc
.
domain/file/document.pdf
我试过这个:
$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) 在 Slim v3 中,“$this['view']”通常指向您的 Twig 渲染器。所以你试图调用一个 Twig 渲染器,这可能不是你想要在这种情况下做的事情。
2) 调用 Twig 渲染器和 return 它的输出的正确语法是
return $this->view->render ($response, 'yourTemplate.twig', [ ... array of parameters goes here ...]);
3) 至于直接访问文档(我以前从未这样做过,所以我的回答可能是错误的),你可能想像这样重定向到文档本身:
return $response->withRedirect ((string)($request->getUri()->withPath('path/to/document')));
让浏览器处理如何处理该文档类型。
希望对您有所帮助。