0

I'm using sweet alert for success messages once i submit the form and redirect to back page its shows success message but after that i go again to that page and just come back without submitting form its shows success message again.

This problem only appear when i submit form once other wise after reloading the page i go to that page and come back its working fine:

Blade file:

@extends('layout/header')
@include('layout/sidebar')
<div id="page-wrapper">
    <div class="container-fluid">
        <div class="row">
            <h2 class="page_heading1">EFTERÅT</h2>
            <p class="page_heading">Här är 5 frågor om hur du efter avslutad kontakt ser på din situation. 1 är mycket
                negativt/dålig t och 10 är mycket positivt/bra Ange en siffra genom att markera på linjen.</p>
            <div class="col-md-12">
                <div class="left_situationen">
                    @if(session()->has('message'))
                        <div class="alert alert-success">
                            {{ session()->get('message') }}
                        </div>
                    @endif
                    <form class="form-horizontal fyl_form" action="/efterat/{{request()->route('id')}}" method="post">
                        @csrf
                        <div class="range-wraph" style="width: 100%;">
                            <label class="custom-range_motet">1. Hur mår du i allmänhet just nu? <br>
                                <input type="range" name="efterat1" value="{{ old('efterat1') }}" class="range" min="1" max="10"></label>
                            <output class="bubble"></output>
                        </div>
                        <div class="range-wraph" style="width: 100%;">
                            <label class="custom-range_situationen">2. Hur upplever du nu dina
                                behov/svårigheter/besvär?<br>
                                <input type="range" name="efterat2" value="{{ old('efterat2') }}" class="range" min="1" max="10"></label>
                            <output class="bubble"></output>
                        </div>
                        <div class="range-wraph" style="width: 100%;">
                            <label class="custom-range_situationen">3. Är du nöjd med den hjälp/de åtgärder du fick?<br>
                                <input type="range" name="efterat3" value="{{ old('efterat3') }}" class="range" min="1" max="10"></label>
                            <output class="bubble"></output>
                        </div>
                        <div class="range-wraph" style="width: 100%;">
                            <label class="custom-range_situationen">4. Hur mycket har hjälpen/åtgärderna bidragit till
                                en förbättring?<br>
                                <input type="range" name="efterat4" value="{{ old('efterat4') }}" class="range" min="1" max="10"></label>
                            <output class="bubble"></output>
                        </div>
                        <div class="range-wraph" style="width: 100%;">
                            <label class="custom-range_situationen">5. Skulle du ha önskat någon annan hjälp?<br>
                                <input type="range" name="efterat5" value="{{ old('efterat5') }}" class="range" min="1" max="10"></label>
                            <output class="bubble"></output>
                        </div>
                        <div class="range-wraph" style="width: 100%;">

                            <label class="form-check-label" for="exampleRadios1">
                                <input class="form-check-input" type="radio" name="efterat_select" 
                                       value="Nej" checked> Nej </label>
                        </div>
                        <div class="range-wraph" style="width: 100%;">

                            <label class="form-check-label" for="exampleRadios1">
                                <input class="form-check-input" type="radio" name="efterat_select" 
                                       value="ja" > Ja, ange vilken hjälp och
                                varför</label>
                        </div>
                        <div class="range-wraph" style="width: 100%;">
                            <textarea  value="{{ old('efterat1_description') }}" name="efterat1_description" class="form-control"></textarea>
                            @if ($errors->has('efterat1_description'))
                                <span class="text-danger">{{ $errors->first('efterat1_description') }}</span>
                            @endif
                        </div>
                        <div class="range-wraph" style="width: 100%;">
                            <p class="bottom_text">Har du några andra synpunkter?</p>
                            <textarea   name="efterat2_description" value="{{ old('efterat2_description') }}" class="form-control"></textarea>
                            <input type="hidden" name="client_id" value="{{$client_id}}">
                            @if ($errors->has('efterat2_description'))
                                <span class="text-danger">{{ $errors->first('efterat2_description') }}</span>
                            @endif
                            <p class="bottom_text">Tack för dina svar</p>
                            <button type="submit" style="width: 100px;" class="btn btn-primary">Skicka</button>
                    </form>
              
                    <script>
                        const allRanges = document.querySelectorAll(".range-wraph");
                        allRanges.forEach(wrap => {
                            const range = wrap.querySelector(".range");
                            const bubble = wrap.querySelector(".bubble");

                            range.addEventListener("input", () => {
                                setBubble(range, bubble);
                            });
                            setBubble(range, bubble);
                        });

                        function setBubble(range, bubble) {
                            const val = range.value;
                            const min = range.min ? range.min : 0;
                            const max = range.max ? range.max : 100;
                            const newVal = Number(((val - min) * 100) / (max - min));
                            bubble.innerHTML = val;

                            // Sorta magic numbers based on size of the native UI thumb
                            bubble.style.left = `calc(${newVal}% + (${8 - newVal * 0.15}px))`;
                        }
                    </script>
                </div>
            </div>
        </div>
    </div>
    <!-- /.container-fluid -->
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
<!-- jQuery -->
@include('layout/footer')

Controller code:

    <?php

namespace App\Http\Controllers;

use App\Efterat;
use DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use RealRashid\SweetAlert\Facades\Alert;


class EfteratController extends Controller
{
    public function __construct()
    {
        $this->middleware('preventBackHistory');
        $this->middleware('auth');
    }

    public function index($id)
    {
        $client_data = $id;
        return view('efterat')->with('client_id', $client_data);

    }

    public function store(Request $request, $id)
    {
      
        $validatedData = $request->validate([
            'efterat1' => 'required',
            'efterat2' => 'required',
            'efterat3' => 'required',
            'efterat4' => 'required',
            'efterat5' => 'required',
            'efterat_select' => 'required|in:ja,Nej',
            'efterat1_description' => 'nullable|max:150|required_if:efterat_select,ja',
            'efterat2_description' => 'nullable|max:150|required_if:efterat_select,ja',
            'client_id' => 'required',
            'handler_id' => 'nullable',
        ],
            [
                'efterat1_description.required_if' => 'fältet krävs när valet är ja',
                'efterat2_description.required_if' => 'fältet krävs när valet är ja',
                'efterat1_description.max' => 'Beskrivningen får inte vara större än 150 tecken!',
                'efterat2_description.max' => 'Beskrivningen får inte vara större än 150 tecken!',
            ]);
        Efterat::create($request->all());
        Alert::success('Framgång', 'Framgångsrikt skickat');
        if (Auth::user()->role == "clients")
        {
            return redirect()->to('om/'.$id);
        }else{
            return redirect()->to('instalningar/'.$id);
        
        }
    }

    public function efteratreports($id)
    {
        $data = Efterat::where('client_id', $id)->get();
        return view('efteratreports')->with('efteratdata', $data);
    }

    public function efteratgraph($id)
    {

        $data = Efterat::where('client_id', $id)->get();

        return view('efteratgraph')->with('efteratgraph', $data);
    }
}

Routes for this:

Route::get('/efterat/{id}', 'EfteratController@index');
Route::post('/efterat/{id}', 'EfteratController@store')->name('efterat');
/* eftrat reports and graph */
Route::get('/efteratreports/{id}', 'EfteratController@efteratreports');
Route::get('/efteratgraph/{id}', 'EfteratController@efteratgraph');
farooq
  • 23
  • 1
  • 6

1 Answers1

1

Generally, when the user clicks the back button in the browser, the browser tries to display the contents of the previous page without reloading it. So it's likely not Laravel flashing to the session again, but the browser trying to help you out by caching the page for you.

sta
  • 8,667
  • 4
  • 29
  • 47
  • I understand this but any solution to stop this – farooq Jun 25 '20 at 08:02
  • @farooq, this is a browser side issue. Not related to Laravel. You can disable the back button https://stackoverflow.com/questions/12381563/how-to-stop-browser-back-button-using-javascript or you can force the page to reload when click back button https://stackoverflow.com/questions/43043113/how-to-force-reloading-a-page-when-using-browser-back-button – sta Jun 25 '20 at 08:06
  • These links : i dont want to stop user go back i just stop the browser to using previous page content – farooq Jun 25 '20 at 08:31
  • 2
    @farooq, then reload the page when user click the back button, there are lot of possible way here https://stackoverflow.com/questions/20899274/how-to-refresh-page-on-back-button-click mark this answer as accepted if it really helped your solution – sta Jun 25 '20 at 08:56