使用布局/视图时在Laravel 4.2中设置响应标头

时间:2017-06-29 23:17:30

标签: php laravel-4 http-headers response

我在控制器中按照以下方式使用布局,如文档中所述(请注意,不会返回任何内容):

public function someControllerFunction () {

    $this->layout = View::make('layout');
    $this->layout->content = View::make('page', $params);

}

在我的布局中,我设置了一些cache-control标题,如下所示:

<?php
    header('Cache-Control: public');
    header('Cache-Control: max-age=600');
    Log::info("headers set in layout");
?>

这一切都很好,花花公子,这些标题存在于应用程序中所有页面的响应中。但是现在我有一个页面,我想明确禁用缓存:

<?php
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    Log::info("headers set in View");
?>

我尝试将它放在我的视图中,但没有雪茄。查看日志,视图中的php在布局中执行之前的,导致布局定义的标题覆盖View definied标题。

所以我决定寻找“Laravel”这样做的方式,并发现文档建议你回复这样的回复:

return Response::view('page')->header('Cache-Control', '...');

但是如何制作使用布局的响应呢?我在文档中找不到任何提及。

1 个答案:

答案 0 :(得分:0)

想出来。您可以制作布局并将其传递给Response(将标题附加到响应中)并按如下方式返回:

$this->layout = View::make('layout');
$this->layout->content = View::make('page', $params);

$response = Response::make($this->layout);
$response->header(...);

return $response;