Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

sandipbutkarshsoft's avatar

Flash session message appears two times when redirecting back

I have two simple functions in my controller

   //	display view to edit sesstings
    public  function  edit()
    {
	    return  view('backend.settings.edit', [
		    'settings' => Setting::pluck('value', 'key')
	    ]);
    }
    
   // update settings and redirect back to edit page
   public  function  update(Request  $request)
   {
	//	validation and update settings code
	return  back()->withSuccess(__('Settings saved successfully'));
   }

how I display an alert

I created a partial to display an alert message like below

@if ($message = session('success'))
	<x-utils.alert type="success">{!! $message !!}</x-utils.alert>
@endif

alert component

@props(['type' => 'info'])
	<div {{ $attributes->merge(["class" => "alert alert-{$type} alert-dismissible fade show"]) }} role="alert", id="alert">
		{{ $slot }}
		<button type="button" class="close" data-dismiss="alert" aria-label="Close">
    		<span aria-hidden="true">&times;</span>
		</button>
	</div>
0 likes
1 reply
thewebartisan7's avatar
Level 14

Use session()->pull('success') this will retrieve success message and delete from session.

@if ($message = session()->pull('success'))
	<x-utils.alert type="success">{!! $message !!}</x-utils.alert>
@endif

I prefer to do like so:

@if ( session()->has('success') )
	<x-utils.alert type="success">{!! session()->pull('success') !!}</x-utils.alert>
@endif
2 likes

Please or to participate in this conversation.