2017-06-12 13 views
1

私は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の例外をスローするとすべてうまくいく。

ありがとうございます! :)

ナディーン
+0

のPUT方法を使用します。これを見てください:https://stackoverflow.com/questions/25857650/laravel-form-wont-patch-only-post-nested-restfull-controllers-methodnotallo – ayip

+0

私がそれを更新した場合、ルートファイル全体を貼り付けることができますか? 'Route :: post( 'update'、['as' => 'update'、 'uses' => 'DanceController @ update']); ' – utdev

+0

add' {!! method_field( 'patch')!!} 'の代わりに' {!!フォームのタグ。 – Webinion

答えて

0

問題が原因 `PATCH`を使用することができる代わりPATCH

{!! Form::model($user, ['method' => 'PUT', 'route' => ['users.update', $user->id]]) !!} 
+0

私のために働かなかった:/私は私のポストに写真を追加した、多分あなたはさらなるアイデアを持っていますか? –

関連する問題