Php 无法在laravel 5.1上的中间件中使用视图功能

Php 无法在laravel 5.1上的中间件中使用视图功能,php,laravel-5.1,middleware,laravel-middleware,Php,Laravel 5.1,Middleware,Laravel Middleware,我有这样的餐具: public function handle($request, Closure $next) { if(Request::segment(1)=='test'){ return $next($request); }else{ Auth::logout(); Session::flush(); return view ('login')->with(['flag'=>1]);

我有这样的餐具:

public function handle($request, Closure $next)
{
    if(Request::segment(1)=='test'){
        return $next($request);
    }else{
        Auth::logout();
        Session::flush();
       return view  ('login')->with(['flag'=>1]);
     }
}
返回视图(“仪表板”)不显示登录页面和
告诉我这个错误

VerifyCsrfToken.php第101行中的FatalErrorException:
对非对象调用成员函数setCookie()

Phpstorme高亮显示视图和工具提示显示此消息

未定义的函数视图更多…(ctrl+f1)

当我使用这个命令时

return redirect()->guest('auth/login');

它重定向到登录页面,但我希望登录页面的pass标志

尝试将
{!!csrf_field()!!}
放在您的表单中,如下所示:

...
{!! csrf_field() !!}                
<div class="form-group">                   
<label>Name</label>
...
。。。
{!!csrf_field()!!}
名称
...

如果要将标志传递到登录页面。你可以试试这个:

return redirect()->guest('auth/login')->with('flag','1');

我在寻找类似问题的解决方案

我的意图是当用户试图从中间件访问经过身份验证的url时返回登录页面视图(但不重定向到登录页面)

下面的代码片段解决了我的问题

将其添加到名称空间中

使用light\Http\Response

并在中间件的handle方法中使用以下return语句


返回新的响应(查看('user/login')

尝试用(['flag'=>1])删除
视图和
('login')->之间的间隙。这应该可以很好地消除间隙,因此使用(['flag'=>1])创建行
returnview('login')->然后在本地服务器上测试它。我删除了gap,但deont Work在您的服务器上运行时是否出现错误?如果你做了,它说什么?在
.env
中是否已将
APP\u DEBUG
设置为true。当您说它不起作用时,您需要具体说明-实际发生了什么?它是什么意思“不起作用?”请描述此代码创建会话的实际和预期行为。我不想使用会话