Привязка модели формы на вложенных маршрутах — Невозможно получить PATCH — Возвращает MethodNotAllowedException для RouteCollection в строке 219

Я получаю 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 мне не помогло.

0

Решение

Попробуйте использовать метод 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 в скрытом входе.
Дайте мне знать, если это работает

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]