我想知道在我的应用程序不能显示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')
。
第一个参数为has
或get
可访问的键。
如果上面已经完成了,您可能需要使用Facade:Session::flash('anything','content');
看看这个
如果您想要删除会话数据你必须使用flush
而不是flash()
。