我在控制器中按照以下方式使用布局,如文档中所述(请注意,不会返回任何内容):
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', '...');
但是如何制作使用布局的响应呢?我在文档中找不到任何提及。
答案 0 :(得分:0)
想出来。您可以制作布局并将其传递给Response(将标题附加到响应中)并按如下方式返回:
$this->layout = View::make('layout');
$this->layout->content = View::make('page', $params);
$response = Response::make($this->layout);
$response->header(...);
return $response;