Laravel - Ошибка при попытке отправить форму - PullRequest
0 голосов
/ 22 октября 2018

У меня есть форма, которая обновляет запись, однако я получаю следующую ошибку:

Метод App \ Handling :: __ toString () не должен вызывать исключение, перехвачено InvalidArgumentException: данные отсутствуют

Handling - это моя модель.

Это мои маршруты:

Route::get('/update-handling/{id}', 'HandlingController@edit');
Route::post('/update-handling/{id}', 'HandlingController@update')->name('postUpdateHandling');

get работает нормально и возвращает мне объект Handling правильно,Когда я пытаюсь обновить форму и перейти на post, маршрут возвращает мне ошибку выше.

И это моя update функция:

    public function update(Request $request, $id)
    {
      $name = $request->input('name');
      $handling = $request->input('handling-thermic');

      $thermic = 0;
      $superficial = 0;

      if ($handling == 0)
      {
        $thermic = 1;
      }
      else if ($handling == 1)
      {
        $superficial = 1;
      }

      $handling = Handling::find($id);

      $handling->u_name = $name;
      $handling->u_thermic = $thermic;
      $handling->u_superficial = $superficial;
      $handling->u_active = 1;
      $handling->save();

    }

Моя HTML-форма:

{!! Form::open(['id' => 'update-handling', 'url' => route('postUpdateHandling',['id' => $handling->id]), 'method' => 'post']) !!}

1 Ответ

0 голосов
/ 22 октября 2018

Ваша форма должна быть:

    <form method="post" action="{{route('postUpdateHandling',['id'=>$handling->id])}}">
       ...

      <button type="submit">Submit</button>
    </form>

в вашем контроллере:

 use Session;

 public function update(Request $request, $id)
    {
       // first find record exists or not , if exits then update else redirect to 404 or home page

      $handling = Handling::find($id);
      if($handling){

      $name = $request->input('name');

      // added ternary condition for better syntax 

      $thermic = (int)$request->input('handling-thermic')==0 ? 1 : 0 ;
      $superficial =(int)$request->input('handling-thermic')==1 ? 1 : 0 ;

      $handling->u_name = $name;
      $handling->u_thermic = $thermic;
      $handling->u_superficial = $superficial;
      $handling->u_active = 1;
      $handling->save();
       return redirect()->back()->with('success', 'Updated');          

      }else{
        // redirect to 404 or homepage
         return redirect('/home');
      }

    }

в вашем блейд-представлении добавьте ниже фрагмент для отображения сообщения:

@if (session()->has('success'))
    <h1>{{ session('success') }}</h1>
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...