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');