Laravel 8 Flash会话不工作的请求



我想知道在我的应用程序不能显示flash消息。我在stackoverflow上尝试了很多解决方案,但我的问题没有解决。

<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesRedirect;
class DebugController extends Controller
{ 
public function get()
{
// Visit direct page flash session is working
// Eg: localhost/debug/get
// But if I send request all flash sessions are not working
return Redirect::route('home')->with('success', 'Working session on visit direct page!');
}

public function post(Request $request)
{    
// All flash sessions are not working
session()->flash('anything', 'Session not working!');
// Working session
session()->put('message', 'Working session!');
// Session not working, is 'success' key reserved?
session()->put('success', 'Session not working!');

return Redirect::route('home')->with('anything', 'Session not working!'); // Session not working
}
}

路线:

Route::get('debug/get', 'DebugController@get');
Route::post('debug/post', 'DebugController@post');

视图:

@if(Session::has('success'))
<div class="alert alert-success">
{{ Session::get('success') }}
</div>
@endif

// Working session
@if(Session::has('message'))
<div class="alert alert-success">
{{ Session::get('message') }}
</div>
{{ session()->forget('message') }}
@endif

我已经尝试修改中间件内核从这个解决方案,但仍然不工作

Laravel Version: 8.x.x
PHP Version: 7.4.x

您需要在视图中执行Session::has('anything')而不是Session::has('success')

第一个参数为hasget可访问的键。

如果上面已经完成了,您可能需要使用Facade:Session::flash('anything','content');

看看这个


如果您想要删除会话数据你必须使用flush而不是flash()

Laravel文档

最新更新