2017-06-29 3 views
0

J'utilise mises en page de la manière suivante dans mes contrôleurs décrits dans les documents (Notez que rien n'est retourné):têtes de réponse de réglage dans Laravel 4.2 lors de l'utilisation layouts/vues

public function someControllerFunction() { 

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

} 

Dans ma mise en page I ensemble certains cache-control têtes comme si:

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

tout cela est bien beau et ces en-têtes sont présents dans la réponse pour toutes les pages de l'application. Mais maintenant, j'ai une page que je veux désactiver la mise en cache explicitement:

<?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"); 
?> 

J'ai essayé de placer dans ma vue, mais pas de cigare. En regardant les journaux, le php dans la vue est exécuté avant que dans la mise en page, ce qui entraîne la mise en page des en-têtes définis remplaçant les en-têtes définis View.

donc j'ai décidé de chercher la façon de le faire et nous avons constaté la documentation vous suggère de retourner une réponse « Laravel » comme ceci:

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

Mais comment puis-je faire une réponse qui utilise mises en page? Je ne trouve aucune mention de cela dans les docs.

Répondre

0

Compris. Vous pouvez créer et transmettre une mise en page dans Response (en attachant les en-têtes à la réponse) et la renvoyer comme suit:

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

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

return $response;