2016-04-01 1 views
1

Я создал промежуточное программное обеспечение, чтобы ограничить страницу, уходящую внутри приборной панели следующим образом:метод [заголовок] не существует на виде - Laravel 5

namespace App\Http\Middleware; 

use Closure; 

class ValidateBackButton { 

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next)    
    {    
      $response = $next($request); 

      $response->header('Cache-Control','nocache, no-store, max-age=0, must-revalidate') 
      ->header('Pragma','no-cache') 
      ->header('Expires','Sat, 01 Jan 1990 00:00:00 GMT'); 

      return $response; 
    } 
} 

Я зарегистрировал промежуточное программное приложение/HTTP/ядро .php

protected $routeMiddleware = [ 
    'auth' => 'App\Http\Middleware\Authenticate', 
    'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 
    'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 
    'validateback' => 'App\Http\Middleware\ValidateBackButton', 
]; 

Я использую промежуточный в моем контроллере:

public function __construct() 
{ 
    $this->middleware('auth'); 
    $this->middleware('validateback'); 
} 

Все, кажется, хорошо, однако, я получаю следующее сообщение об ошибке:

BadMethodCallException в view.php линии 387:

метод [заголовок] не существует на виду.

Просьба помочь мне!

UPDATE

Я думаю, что не должно быть никаких проблем с точки зрения, так что я имею файл макета ниже. Код для просмотра слишком длинный, чтобы поместить его здесь.

<!DOCTYPE html> 
<!--[if IE 8]> <html lang="en" class="ie8 no-js"> <![endif]--> 
<!--[if IE 9]> <html lang="en" class="ie9 no-js"> <![endif]--> 
<!--[if !IE]><!--> 
<html lang="en" class="no-js"> 
<!--<![endif]--> 
<head> 
<meta charset="utf-8"/> 
<title>SB Admin v2.0 in Laravel 5</title> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<meta content="width=device-width, initial-scale=1" name="viewport"/> 
<meta content="" name="description"/> 
<meta content="" name="author"/> 

<link rel="stylesheet" href="{{ asset("assets/stylesheets/styles.css") }}" /> 
</head> 
<body> 
@yield('body') 
<script src="{{ asset("assets/scripts/frontend.js") }}" type="text/javascript"></script> 
</body> 
</html> 

ответ

1

следующие изменения решить мою проблему:

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Http\RedirectResponse; 

class ValidateBackButton { 

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next)    
    {    
      //$response = $next($request); 

      $response = $next($request); 

      $response = $response instanceof RedirectResponse ? $response : response($response); 

      return $response->header('Cache-Control','nocache, no-store, max-age=0, must-revalidate') 
          ->header('Pragma','no-cache') //HTTP 1.0 
          ->header('Expires','Sat, 01 Jan 1990 00:00:00 GMT'); // // Date in the past 

      return $response; 
    } 

} 
0

Вы можете это исправить, приковав header к $next:

return $next($request)->header('Cache-Control','nocache, no-store, max-age=0, must-revalidate') 
      ->header('Pragma','no-cache') 
      ->header('Expires','Sat, 01 Jan 1990 00:00:00 GMT'); 

Если это не помогает, убедитесь, что вы не используете header в другом месте. Из сообщения об ошибке, похоже, вы также используете header с view(). (Можете помочь, если вы также разместите свой код просмотра).

+0

спасибо, но это не помогает –

+0

разместить код для вашего зрения, как ошибка может исходить оттуда. В частности, как контроллер визуализирует представление. –

+0

Я обновил файл макета. Просмотр является нормальным html-файлом в разделе тела макета. –

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