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。当您说它不起作用时,您需要具体说明-实际发生了什么?它是什么意思“不起作用?”请描述此代码创建会话的实际和预期行为。我不想使用会话