簡體   English   中英

Laravel Flash Session 有時無法正常工作

[英]Laravel Flash Session does not work expectedly sometime

我正在開發一個項目,在提交表單后我使用 flash session 來顯示消息。 但問題是 flash session 消息有時出現有時不出現。 我也在這里分享了代碼。

這是 function:

public function edit_department(Request $req,$id)
    {
        $dep = department::where("externalid", $id)->first();
        if(!$dep)
        {
            return ['message' => 'Department Not Found'];
        }
        $supervisors = member::select("id","name")->whereRelation("get_role","role_code","=","supervisor_13")->get();

        if($req->method() == "POST")
        {
            $req->validate([
                'name'=>'required|min:3|max:60',
                'supervisor'=>'nullable|exists:members,id',
                'time' =>'required|integer|min:1|max:50000',

                'description'=>'nullable|max:2999',
            ]);

            try
            {
                $sup_temp = $dep->supervisor_id;
                $dep->name = $req->name;
                $dep->ticket_time = $req->time;

                $dep->description = $req->description;
                $dep->supervisor_id = $req->supervisor;
                $desc = "";
                if($dep->save())
                {
                    if($dep->wasChanged())
                    {
                   
                        $desc = "The department ( ".$dep->name." ) has been updated"." by ".session("cms_member_name")." (".session("cms_member_role_name").")";
                        $users = array();
                        $this->mail_subject =" Department Updated";
                        $this->mail_body['description'] = $desc;
                        $this->mail_link = "department/profile";
                        $users = $this->get_mail_members($this->mail_subject, $this->mail_body, $this->mail_link, ['manager_12','super_admin_11'],[],$users);
                       
                        dispatch(
                            function () use ($users)
                            {
                                $this->send_to_members("","","",$users,"false","2");
                            }
                        )->delay(now()->addSeconds(config("app.queue_time")));

                        return redirect()->back()->with(['form_submit_flag' => 'true', 'form_submit_msg' => 'Department Edited Successfully']);
                    }
                    else
                    {
                        return redirect()->back()->with(['form_submit_flag' => 'false', 'form_submit_msg' => 'Nothing was changed']);

                    }

                }
                else
                {
                    return redirect()->back()->with(['form_submit_flag' => 'false', 'form_submit_msg' => 'Department Was not edited Successfully']);
                }
            }
            catch(Exception $ex)
            {
                return redirect()->back()->with(['form_submit_flag' => 'false', 'form_submit_msg' => "An Exception Occured. ".$ex->getMessage()]);
            }
        }

        return view("department.edit_department",compact("supervisors","dep"));

    }

現在這是刀片代碼:

@if(Session::has("form_submit_flag"))
@if(session("form_submit_flag") == "true")
<div class="alert alert-success text-dark alert-dismissible">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <strong>Message! </strong> {!! session("form_submit_msg") !!}
  </div>

@elseif(session("form_submit_flag") == "false")
<div class="alert alert-danger alert-dismissible">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <strong>Message! </strong> {!! session("form_submit_msg") !!}
  </div>


@endif

@endif

這就是路線。

Route::match(['get','post'],'edit_department/{id}',[DepartmentController::class,"edit_department"])->name("edit_department");

現在你可以看到我還有隊列代碼要執行。 現在,當我提交表單時,blade 中的 flash 消息有時會出現,有時不會。 但是所有代碼都可以完美運行。 沒有錯誤發生。 只是 flash 消息沒有出現。 我做錯了嗎?

任何幫助將不勝感激。

這是路線列表

                                        | user_auth                                |
|        | GET|POST|HEAD | edit_department/{id}          | edit_department             | App\Http\Controllers\DepartmentController@edit_department              | web                                      |
|        |               |                               |                             |

在此處輸入圖像描述

我知道這不是您的問題,但這可以幫助其他人遇到類似的問題。

如果您在路由頂部指定了一個中間件web組,並且它駐留在 web.php 文件中,那么 web 中間件將被加載兩次,這會影響 session 數據。

我猜兩次加載任何中間件都會產生類似的效果。

有關該問題的更多詳細信息,請參閱這篇文章。

https://laracasts.com/discuss/channels/laravel/session-flash-message-not-working-after-redirect-route

暫無
暫無

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

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