我正在使用laravel 5.我正在使用flash消息,它无法正常工作

时间:2016-01-01 07:36:23

标签: php laravel

我的代码如下!

控制器:

use Session;

    public function update($id, Request $request)
    {
    $book = Section::findOrFail($id);                     
    $input = $request->all();                                

       $book ->fill($input)->save();

                    Session::flash('message', 'Book successfully updated!');  
                    return redirect()->back();                      

        }

以下是我的模板文件代码:

    @if(Session::has('message'))
       <div class="alert alert-primary fade in">
        <button data-dismiss="alert" class="close"><span>×</span></button>
                    {{ Session::get('message') }}
       </div>
    @endif

我是laravel的初学者。在控制器中我已经使用Session然后使用Session::flash('key','value'),并且在模板文件中我使用Session::get()方法获取它。

5 个答案:

答案 0 :(得分:0)

我能够通过将路线放在&#34; web&#34;路由文件中的中间件:

Route::group(['middleware' =>['web'], 'prefix' => 'admin'], function () {   
    Route::resource('book', 'BookController');
});

添加中间件网络后,工作正常!

答案 1 :(得分:0)

有关更多信息:如果您使用的是Laravel 5.2,则很可能是由于默认情况下未使用StartSession中间件。

如果您查看app/Http/Kernal.php,可以看到预定义了两个中间件组:webapiweb中间件组在中间件中添加了cookie,会话和CSRF令牌。

如果您的路由不在web中间件组内,则默认情况下您不会获得此功能。如果您将路由放在web中间件组中,那么您的会话应该开始工作。

答案 2 :(得分:0)

原因可能是你有 2个网络中间件。第二个就是杀死闪存数据。我得到了全新安装。您可以尝试通过$ php artisan route:list命令进行检查。

| | GET|HEAD | /  |   | App\Http\Controllers\PagesController@one | web,web |

所以只需从web

中删除routes.php即可
Route::group([], function () {    
 ....

答案 3 :(得分:-1)

你必须为Session

导入这个类
use Illuminate\Support\Facades\Session;

尝试一下,它会起作用: - )

答案 4 :(得分:-1)

在控制器中尝试删除会话闪存并用

替换重定向行
return redirect()->back()->with('message', 'Book successfully updated!');