簡體   English   中英

Laravel 會話 Flash 消息不起作用

[英]Laravel session Flash Message Not working

會話消息不起作用我試過這個代碼和許多在線可用的修復這里id我的商店功能`

public function store(Request $request)
    {
        // dd($request->all());
        $this->validate($request, [
            'name'      =>'required',
            'username'  =>'required',
            'email'     =>'required',
            'address'   =>'required',
            'likes'     =>'required',
            'gender'        =>'required'

        ]);

        $input = $request->all();

        Contacts::create($input);

        Session::put('flash_message', 'Task successfully added!');
        return redirect()->back();
    }

並通過此代碼檢索

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

我解決了 laravel 6.x 的問題

一旦我將\\Illuminate\\Session\\Middleware\\StartSession::class\\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class從 web $middlewareGroupsapp\\Http\\Kernel.php $middleware ,一切都開始按預期工作。

我用 laravel 5.2 解決了這個問題。

我有這樣的路線

Route::group(['middleware' => [ 'web','auth']], function () {
.......
}

所以去掉了web中間件

Route::group(['middleware' => ['auth']], function () {
.......
}

並開始工作

分析:默認 Laravel 添加 web 中間件。 通過 php artisan route:list 檢查它顯示 web, web,auth 。

所以通過再次定義它為 web 中間件重定向兩次。

我用 Laravel 5.2 解決了這個問題。

我在里面有所有的路線:

Route::group(['middleware' => 'web'], function() {

我刪除它是因為當我在 Name Middleware 列中使用命令 php artisan route:list 時,“web”顯示為 times: web, web.

如果您有 AUTH 替換為:

Route::group(['middleware' => 'auth'], function() {

我也刪除了一個重復的路由(在路由.php 中)。 現在我只有:

Route::resource('/publicaciones', 'PublicacionesController');

我的控制器

return redirect()->back()->with('success', 'Saved!'); 

我的觀點

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

您是否包含以下命名空間

use Session;

而不是下面的代碼

 Session::put('flash_message', 'Task successfully added!'); 

 Session::flash('flash_message', 'Task successfully added!');

在而不是

return redirect()->back();

嘗試使用

 return redirect()->route('your route');

這個論壇有點晚了。 我遇到了這個問題,我一直在不同的網站上尋找正確的解決方案,但都沒有奏效。 這是我的情況,我使用的是v6.0 ,我將路由放在routes\\api.php

我認為將route放在正確的地方或文件中是有區別的,無法解釋更多。

這是我解決的方法,我將路由從routes\\api.phproutes\\web.php ,經過大量研究,我現在成功顯示了 flash 消息。

試試這個代碼

Session::flash('flash_message', 'Task successfully added!');
Session::save();
return redirect()->back();

這對我有用

如果“會話”無法在您的刀片視圖中顯示錯誤,這將起作用。

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

當驗證失敗時,不再執行任何代碼並再次加載上一頁。 這就是會話消息不起作用的原因。 為了檢查任何驗證錯誤,請使用刀片文件頂部的以下代碼片段。

@if ($errors->any())
  @foreach ($errors->all() as $error)
    <div class="alert alert-danger alert-block">
      <button type="button" class="close" data-dismiss="alert">×</button>
      <strong>{{ $error }}</strong>
    </div>
  @endforeach
@endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM