私はLaravel 5.4を使用していますが、私のUsersControllerで更新機能に問題があります。 私はいつも "MethodNotAllowedHttpException"を取得します。私はすでに、あなたのフォームが、例えば、投稿はルーティングされますが、ここには当てはまらないはずです...Laravelルーティングユーザーの更新MethodNotAllowedHttpException
私はちょうどあなたに私のコードスニペットを与えます。ちょうどあなたが知っている:私は完全にLaravelに新しいです!
UsersController.php
public function update(Request $request, $id)
{
// $user = Auth::user();
$user = User::findOrFail($id);
$this->validate($request, [
'email' => 'required|string|email|max:255|unique:users',
'old_password' => 'nullable|string|min:6|confirmed',
'password' => 'nullable|string|min:6|confirmed',
'password_comfirmation' => 'nullable|string|min:6|confirmed',
]);
$old_password = $request->old_password;
$password = $request->password;
$password_confirmation->$request->password_confirmation;
if (Hash::check($old_password, $hashedPassword)) {
if($password == $password_confirmation){
$user->email = $request->email;
$user->password = Hash::make($password);
$user->update();
}
else {
Session::flash('flash_message', 'Password Confirmation not equal!');
return redirect()->back();
}
}
else {
Session::flash('flash_message', 'Old password wrong!');
return redirect()->back();
}
Session::flash('flash_message', 'User successfully added!');
return redirect()->back();
}
でweb.php
Route::resource('users', 'UsersController');
アップデート経由users.blade.php
@extends('layouts.app')
@section('content')
{!! Form::model($user, ['method' => 'PATCH', 'route' => ['users.update', $user->id]]) !!}
<div class="form-group">
{!! Form::label('email', 'E-Mail:', ['class' => 'control-label']) !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('old_password', 'Old assword:', ['class' => 'control- label']) !!}
{!! Form::password('old_password',['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('password', 'New password:', ['class' => 'control-label']) !!}
{!! Form::password('password', ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('password', 'Repeat new password:', ['class' => 'control-label']) !!}
{!! Form::password('password_confirmation', ['class' => 'form-control']) !!}
</div>
{!! Form::submit('Update', ['class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
{!! Form::model($user, ['method' => 'DELETE', 'route' => ['users.destroy', $user->id]]) !!}
{!! Form::submit('Delete', ['class' => 'btn btn-danger']) !!}
{!! Form::close() !!}
@stop
ルーティング私はPHP職人ルートを実行します。リストは、それが教えてください:
| GET|HEAD | users/create | users.create | App\Http\Controllers\[email protected] | web |
| PUT|PATCH | users/{user} | users.update | App\Http\Controllers\[email protected] | web |
| GET|HEAD | users/{user} | users.show | App\Http\Controllers\[email protected] | web |
| DELETE | users/{user} | users.destroy | App\Http\Controllers\[email protected] | web |
| GET|HEAD | users/{user}/edit | users.edit | App\Http\Controllers\[email protected]
私は実際には機能を更新しようとはしませんでした。なぜなら、私はまだその点に到達していないからです...あなたは何かヒントを持っていますか?
---- EDIT ----
これは誤りである:私はまったく同じ(ただし、メソッド:DELETE)を働くユーザーのための破壊機能を持つ It looks as if it doesn't allow POST - but I don't even use POST. I tried the POST option in the comments as well, but I still get the same error...
とそれはdoesnの例外をスローするとすべてうまくいく。
ありがとうございます! :)
ナディーン
のPUT方法を使用します。これを見てください:https://stackoverflow.com/questions/25857650/laravel-form-wont-patch-only-post-nested-restfull-controllers-methodnotallo – ayip
私がそれを更新した場合、ルートファイル全体を貼り付けることができますか? 'Route :: post( 'update'、['as' => 'update'、 'uses' => 'DanceController @ update']); ' – utdev
add' {!! method_field( 'patch')!!} 'の代わりに' {!!フォームのタグ。 – Webinion