1

ドキュメントに直接アクセスするルートを作りたい。たとえば、 にアクセスしたいのですdomain/file/document.pdfdomain/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() 

たぶん私は何かを見逃したのかもしれませんが、わかりません。ドキュメントには他に何も見つかりませんでした。

ありがとう!

4

1 に答える 1

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')));

そして、そのドキュメント タイプの処理方法をブラウザに任せるだけです。

お役に立てれば。

于 2016-06-02T09:56:03.810 に答える