Ларавель, возвращая ответ с парамсом


Я хочу сделать что-то вроде этого:

return Response::view('survey.do')
              //->with('theme',$survey->theme);
              ->header('Cache-Control', 'no-cache, must-revalidate')
              ->header('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT');

Он говорит, что не может найти определение темы в представлении, проблема в том, когда я делаю:

View::make('survey.do')->with('theme',$survey->theme) 

Это работает, но я не могу получить доступ к заголовку http response, как я могу этого добиться?

2 2

2 ответа:

Вместо использования with и header передайте массивы следующим образом:

$data = array('theme' => $survey->theme);

$headres = array(
    'Cache-Control' => 'no-cache, must-revalidate',
    'Expires' => 'Mon, 26 Jul 1997 05:00:00 GMT'
);

return Response::view('survey.do', $data, '200', $headres);

Это будет работать, потому что это сигнатура метода / заголовок в классе Response (фасад):

public static function view($view, $data = array(), $status = 200, array $headers = array())

В этом случае он вызывает метод make этого класса, который выглядит следующим образом:

public static function make($content = '', $status = 200, array $headers = array())
{
    return new IlluminateResponse($content, $status, $headers);
}

Вы на хорошем пути. Сначала поместите заголовок view & в переменную:

$view = View::make('survey.do')
    ->with('theme', $survey->theme);

$response = Response::make($view, $status);
$response->header('Cache-Control', 'no-cache, must-revalidate')
         ->header('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT');

return $response;