2016-06-02 2 views
1

Я хочу сделать маршрут для прямого доступа к документу. Например, я хочу получить доступ к domain/file/document.pdf, но по domain/doc.Slim 3 прямой доступ к файлу

Я попытался это:

$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

Несколько моментов здесь:

1) В Слим v3, "$ это [ 'вид']", как правило, указывает на ваш 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'))); 

и пусть дело браузера с тем, как обрабатывать этот тип документа.

Надеюсь, это поможет.

Смежные вопросы