Я получаю MethodNotAllowedException
ошибка всякий раз, когда я пытаюсь отправить PATCH
запрос к моему контроллеру Это происходит только на моем вложенном маршруте, все другие маршруты, которые запускают PATCH
просьба работать отлично.
routes.php:
Route::resource('customers.aircraft','AircraftController');
моя форма:
Form::model($aircraft, ['method' => 'PATCH', 'class' => 'form-horizontal', 'action' => ['AircraftController@update', $aircraft->id]])
Каждый самолет принадлежит заказчику. Мой URL выглядит так:
example.com/customers/5/aircraft/6/edit
Когда я получаю сообщение об ошибке, в адресной строке я наблюдаю следующее:
example.com/customers/6/aircraft
Я решил, что это не может быть вызвано контроллером, потому что самая первая строка в моем @update
метод dd($request);
и это не так далеко. Я предполагаю, что проблема в том, что маршрут не получает информацию, необходимую для направления моего запроса, он, очевидно, принимает aircraft_id
и используя его как customer_id
, но я не могу понять, как и почему.
Я попробовал это:
Form::model($aircraft, ['method' => 'PATCH', 'class' => 'form-horizontal', 'action' => ['AircraftController@update', [$customer_id, $aircraft->id]]])
Думая, что это нужно customer_id
чтобы быть отправленным через, но это не сработало. Я довольно новичок в Laravel
так что я ожидаю, что это просто недостаток знаний, однако ничто на сайтах Stackoverflow, Laravel или Laracasts мне не помогло.
Попробуйте использовать метод Put ():
Form::model($aircraft, ['method' => 'PUT', 'class' => 'form-horizontal', 'action' => ['AircraftController@update', $aircraft->id]])
для Route :: resource URL метода обновления должен быть таким:
example.com/aircraft/6
public function update(AircraftRequest $request, $aircraft_id)
{
$data = $request->all();
dd($data['registration']);
$request['registration'] = strtoupper($request['registration']);
$aircraft->findOrFail($aircraft_id)->update($request->all());
return redirect()->action('AircraftController@show', $aircraft_id);
}
поэтому попробуйте отправить customer_id в скрытом входе.
Дайте мне знать, если это работает
Других решений пока нет …