Есть страница, сверстанная на bootstrap'е. На ней есть форма для редактирования пользователя, но при нажатии на кнопку "Сохранить" возникает ошибка без сообщения (MethodNotAllowedHttpException, No message), в чём проблема? Моя форма:
<form class="form-signin" method="PUT" action="{{ route('users.updateuser', $user->id) }}">
<h1 class="h3 mb-3 font-weight-normal">{{__('Edit Profile')}}</h1>
<input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ $user->name }}" placeholder="Имя" required autofocus>
@if ($errors->has('name'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
<input id="fam" type="text" class="form-control{{ $errors->has('fam') ? ' is-invalid' : '' }}" name="fam" value="{{ $user->fam }}" placeholder="Фамилия" required autofocus>
@if ($errors->has('fam'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('fam') }}</strong>
</span>
@endif
<input id="patr" type="text" class="form-control{{ $errors->has('patr') ? ' is-invalid' : '' }}" name="patr" value="{{ $user->patr }}" placeholder="Отчество">
@if ($errors->has('patr'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('patr') }}</strong>
</span>
@endif
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ $user->email }}" disabled placeholder="Адрес эл. почты" required>
@if ($errors->has('email'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
<a href="{{route('login')}}" >{{__('Change password')}}</a>
<button class="btn btn-lg btn-primary btn-block" type="submit">{{__('Save')}}</button>
<a href="{{route('login')}}" style="color: red;">{{__('Delete account')}}</a>
<p class="mt-5 mb-3 text-muted">© Колганов Сергей, 2019</p>
<input id="gender_id" type="hidden" class="form-control{{ $errors->has('gender_id') ? ' is-invalid' : '' }}" name="gender_id" value="{{ '3' }}" required autofocus>
<input id="role_id" type="hidden" class="form-control{{ $errors->has('role_id') ? ' is-invalid' : '' }}" name="role_id" value="{{ '6778' }}" required autofocus>
<input id="userstat_id" type="hidden" class="form-control{{ $errors->has('userstat_id') ? ' is-invalid' : '' }}" name="userstat_id" value="{{ '1' }}" required autofocus>
</form>
Маршрут:
Route::put('users/{user}/updateuser', 'StationController@updateuser')
->name('users.updateuser');
Для реализации CRUD
приложения в Laravel
можно сделать такой роутинг:
Route::resource('tasks', 'TaskController');
Или в ручную:
Route::put('tasks', function()
{
});
В html
:
<form action="{{ route('route_name') }}" method="post">
{{ method_field('PUT') }}
{{ csrf_field() }}
</form>
Или так:
<form action="{{ route('route_name') }}" method="post">
<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
А ещё ответ есть тут .
В соответствии со стандартами method
у формы может быть только get
, post
или dialog
w3.org
Соответственно браузер отправляет post
вместо put
, а соответствующего маршрута у вас нет
Лучше добавьте $user->id
в качестве hidden input в саму форму и отправьте post
Ещё один способ решения нашёлся: создать форму через blade шаблон, думаю так проще :)
{{
Form::model($user, ['class' => 'form-signin',
'method' => 'PUT',
'route' => [
'users.updateuser',
$user->id,
]
])
}}
{{
Form::submit(
__('Save'),
[
'class' => 'btn btn-lg btn-primary btn-block',
]
)
}} {{Form::close()}}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Предположим есть реализация шаблона проектирования object pool
Почему присутствие структуры Hard Logic приводит к ошибке компиляции, а структуры SoftLogic — нет?