Laravel баг с обновлением страницы

Суть такова, что у меня на главной странице есть форма - по нажатию на кнопку срабатывает метод, заносит данные в бд и возвращает меня обратно. Однако когда я пытаюсь перезагрузить страничку после этого, метод срабатывает снова и в бд заносится точно такая же запись, хотя форма уже пустая и, казалось бы, отправлять уже нечего. (Да и почему метод вообще срабатывает, если я f5 нажимаю) Не пойму в чем проблема

Форма с главной страницы

<form action="{{route('calculate')}}"
                     method="POST"
                       enctype="multipart/form-data"
                       class="form-inline py-5">
                   @csrf
                   <div class="form-inline w-100 justify-content-between align-content-center border p-2 my-2 rounded blue-light-bg">
                       <label class="col-4" for="workplaces">
                           Кол-во рабочих мест
                       </label>
                       <input type="number" name="wp" class="col-2 form-control text-center">
                       <span class="col-4">Кол-во рабочих мест расчитывается как сумма сотрудников + кол-во отдельно стоящией техники (принтеры, факсы).</span>
                   </div>

                   <div class="form-inline w-100 justify-content-between align-content-center border p-2 my-2 rounded blue-light-bg">
                       <label class="col-4" for="hl">
                           Длина лаборатории  <span class="text-muted px-2">в метрах</span>
                       </label>
                       <input type="number" name="hl" class="col-2 form-control text-center">
                       <span class="col-4">Укажите длину лаборатории.</span>
                   </div>

                   <div class="form-inline w-100 justify-content-between align-content-center border p-2 my-2 rounded blue-light-bg">
                       <label class="col-4" for="wl">
                           Ширина лаборатории  <span class="text-muted px-2">в метрах</span>
                       </label>
                       <input type="number" name="wl" class="col-2 form-control text-center">
                       <span class="col-4">Укажите ширину лаборатории.</span>
                   </div>

                   <div class="form-inline w-100 justify-content-between align-content-center border p-2 my-2 rounded blue-light-bg">
                       <label class="col-4" for="ct">
                           Тип кабеля
                       </label>
                       <select name="ct" class="col-2 form-control" id="cable" onchange="myFunction()">
                           @if($values != "")
                           @foreach($values->where('category', 'cable') as $value)
                               <option class="text-center" value="{{$value->title}}">
                                   {{$value->title}}
                               </option>
                           @endforeach
                           @endif
                       </select>
                       <span class="col-4">Тип сетевого кабеля, посредством которого осуществляется передача данных между устройствами.</span>
                   </div>

                   <div class="form-inline w-100 justify-content-between align-content-center border p-2 my-2 rounded blue-light-bg" id="connection" hidden>
                       <label class="col-4" for="cc">
                           Категория подключения
                       </label>
                       <select name="cc" class="col-2 form-control">
                           @if($values != "")
                           @foreach($values->where('category', 'connection') as $value)
                           <option class="text-center" value="{{$value->title}}">
                               {{$value->title}}
                           </option>
                           @endforeach
                           @endif
                       </select>
                       <span class="col-4">Категория 5Е - обеспечивает скорость передачи данных на скорости 100Mb/s <br>
                                           Категория 6 - обеспечивает скорость передачи данных на скорости 1000Mb/s.</span>
                   </div>

                   <div class="form-inline w-100 justify-content-between align-content-center border p-2 my-2 rounded blue-light-bg">
                       <label class="col-4" for="tp">
                           Тип топологии сети
                       </label>
                       <select name="tp" class="col-2 form-control">
                           @if($values != "")
                           @foreach($values->where('category', 'topology') as $value)
                               <option class="text-center" value="{{$value->title}}">
                                   {{$value->title}}
                               </option>
                           @endforeach
                           @endif
                       </select>
                       <span class="col-4">Топология определяет структуру сети о том, как все компоненты взаимосвязаны друг с другом.</span>
                   </div>

                   <div class="form-inline w-100 justify-content-between align-content-center border p-2 my-2 rounded blue-light-bg">
                       <label class="col-4" for="sw">
                           Свитч
                       </label>
                       <div class="col-2 px-0 mx-0">
                           <span>
                               <select name="sw" class="form-control col">
                                   @if($values != "")
                                   @foreach($values->where('category', 'switch') as $value)
                                       <option class="text-center" value="{{$value->title}}">
                                           {{$value->title}}
                                       </option>
                                   @endforeach
                                   @endif
                               </select>
                               <span class="form-inline">
                                   <label class="col text-muted">Кол-во</label>
                                   <input type="number" name="swc" class="col-5 form-control text-center my-2" title="Кол-во" value="1">
                               </span>
                           </span>
                       </div>
                       <span class="col-4">Сетевой коммутатор — это электронный прибор, объединяющий несколько компьютеров и/или других цифровых устройств в локальную сеть</span>
                   </div>

                   <div class="form-inline w-100 justify-content-between align-content-center border p-2 my-2 rounded blue-light-bg">
                       <label for="ad" class="col-4">
                           Дополнительно
                       </label>
                       <div class="col-2 px-0 mx-0" id="filters">
                           <span>
                               <select name="ad[]" class="form-control w-100">
                                   @if($values != "")
                                       @foreach($values->where('category', 'additional') as $value)
                                           <option class="text-center" value="{{$value->title}}">
                                               {{$value->title}}
                                           </option>
                                       @endforeach
                                   @endif
                               </select>
                               <span class="form-inline">
                                   <label class="col text-muted">Кол-во</label>
                                   <input type="number" name="adc[]" class="col-5 form-control text-center my-2" title="Кол-во" value="1">
                               </span>
                           </span>
                       </div>
                       <div class="col-4">
                           <button type="button"
                                   class="btn btn-outline-primary"
                                   onclick="addFilter" id="addFilter">Добавить поле
                           </button>
                           <button type="button"
                                   class="btn btn-outline-dark"
                                   onclick="removeFilter" id="removeFilter">Убрать поле
                           </button>
                       </div>
                   </div>
                   <div class="w-100 justify-content-center form-inline">
                       <div class="col">
                           <button type="submit" class="btn-lg btn-primary my-3">Расчитать</button>
                       </div>
                   @if(isset($total_price))
                       <div class="col">
                           <label>Стоимость материалов: {{$total_price}}</label>
                       </div>
                   @endif
                   </div>
               </form>

Метод-обработчик формы

public function calculate(Request $request)
   {
       $calcData = $request->all();

       // Валидация данных
       $validator = Validator::make($calcData,
           [
               'wp' => 'required|min:1|integer|',
               'hl' => 'required|min:1|integer|',
               'wl' => 'required|min:1|integer|',
               'swc' => 'required|min:1|integer'
           ]);

       if($validator->fails()) {
           return redirect(route('main-page'))
               ->withErrors($validator)
               ->withInput();
       }


       //Установка главной величины для расчётов (ширина или длина)
       if ($calcData['hl'] > $calcData['wl']){
           $size = $calcData['hl'];
       }
       else{
           $size = $calcData['wl'];
       }

       //Цена и название кабеля (тип подключения для витой пары)
       if ($calcData['ct'] == 'Витая пара')
       {
           $connection = Value::where('title', $calcData['cc'])->first();
           $cable = [
               'n' => $calcData['ct'],
               'p' => $connection->value,
               'cc' => $calcData['cc']
           ];
       }
       else{
           $cable = [
               'n' => $calcData['ct'],
               'p' => Value::where('title', $calcData['ct'])->first()->value,
               'cc' => ''
           ];
       }

       //Расчёт стоимости кабеля исходя из необходимой длины согласно топологии и размеров кабинета
       if ($calcData['tp'] == 'Топология Шины')
       {
           $length = 3 + $size + $calcData['wp']/2;
           $cable += [
               'f' => "3м + Длина лаборатории + Кол-во рабочих мест/2",
               'c' => $length,
               'pt' => intval($length * $cable['p'])];
       }

       elseif ($calcData['topology'] == 'Топология Звезды')
       {
           $length = 3 + $size + $calcData['workplaces'] * 1.5;
           $cable += [
               'f' => "3м + Длина лаборатории + Кол-во рабочих мест * 1.5",
               'c' => $length,
               'pt' => intval($length * $cable['p'])
               ];
       }
       else
       {
           $length = 3 + $size/2 * 6.28;
           $cable += [
               'f' => "3м + Длина лаборатории/2 + 2pi",
               'c' => $length,
               'pt' => intval($length * $cable['p'])];
       }

       //Кабель-канал
       $canal = [
           'f' => $cable['f'],
           'c' => $cable['c'],
           'p' => Value::where('title', 'Кабель канал')->first()->value,

       ];
       $canal += [
           'pt' => $canal['p'] * $canal['c']
       ];

       //Розетки --//-- Сетевые розетки
       $socket = [
           'f' => 'Кол-во рабочих мест * 2',
           'c' => $calcData['wp'] * 2,
           'p' => Value::where('title', 'Розетка')->first()->value,

       ];
       $socket += [
           'pt' => $socket['p'] * $socket['c']
       ];

       $p_socket = [
           'f' => 'Кол-во рабочих мест * 2',
           'c' => $calcData['wp'] * 2,
           'p' => Value::where('title', 'Сетевая розетка')->first()->value,

       ];
       $p_socket += [
           'pt' => $p_socket['p'] * $p_socket['c']
       ];

       //Свитч
       $switchGet = Value::where('title', $calcData['sw'])->first();

       $switch = [
           'n' => $switchGet->title,
           'p' => $switchGet->value,
           'c' => $calcData['swc'],

       ];
       $switch += [
           'pt' => $switch['p'] * $switch['c'],
       ];

       // Итоговая цена

       $total_price = $socket['pt'] + $p_socket['pt'] + $cable['pt'] + $switch['pt'] + $canal['pt'];

       //Создание записи

       $calc = new Calculation();
       if(Auth::user())
       $calc->user_id = Auth::user()->id;
       else
       {
           $calc->user_id = 0;
       }
       $calc->socket_f = $socket['f'];
       $calc->socket_c = $socket['c'];
       $calc->socket_p = $socket['p'];
       $calc->socket_pt = $socket['pt'];

       $calc->p_socket_f = $p_socket['f'];
       $calc->p_socket_c = $p_socket['c'];
       $calc->p_socket_p = $p_socket['p'];
       $calc->p_socket_pt = $p_socket['pt'];

       $calc->cable_f = $cable['f'];
       $calc->cable_n = $cable['n'];
       $calc->cable_cc = $cable['cc'];
       $calc->cable_c = $cable['c'];
       $calc->cable_p = $cable['p'];
       $calc->cable_pt = $cable['pt'];

       $calc->switch_n = $switch['n'];
       $calc->switch_c = $switch['c'];
       $calc->switch_p = $switch['p'];
       $calc->switch_pt = $switch['pt'];

       $calc->canal_f = $canal['f'];
       $calc->canal_c = $canal['c'];
       $calc->canal_p = $canal['p'];
       $calc->canal_pt = $canal['pt'];

       $calc->total = $total_price;

       $calc->save();

       if (isset($calcData['ad'])) {
           foreach ($calcData['ad'] as $i=>$add) {
               $ad = new Additioanl();
               $ad->calc_id = $calc->id;
               $ad->add_n = Value::where('title', $add)->first()->title;
               $ad->add_c = $calcData['adc'][$i];
               $ad->add_p = Value::where('title', $add)->first()->value;
               $ad->add_pt = $calcData['adc'][$i] * Value::where('title', $add)->first()->value;
               $ad->save();

               $total_price += $ad->add_pt;
               DB::table('calculations')->update(['total' => $total_price]);
           }
       }


       return view('index', ['total_price' => $total_price]);
   }

В web.php и PageController'e всё "чисто" Браузер - Microsoft Edge

Прошу прощения за большое кол-во кода, я правда не знаю в чем проблема и какая инфа может понадобиться для её решения.

Гуглил - ничего не нашел, либо искать не умею


Ответы (0 шт):