2016-07-12 7 views
2

私はLaravel 5.2.3でPHPstormを使用しています。現在、作成ページのフォームを再利用して人物情報を更新しようとしています。私はlaracastチュートリアルからTにすべてを追ってきましたが、何らかの理由でMethodNotAllowedというエラーが表示されます。MethodNot更新を実行しようとすると許可されます。

ルート

Route::group(['middleware' => ['web']], function() 
 
{ 
 
    ... 
 

 
    Route::get('create','[email protected]'); 
 

 
    Route::post('create', '[email protected]'); 
 

 
    Route::resource('pages', 'ResourceController'); 
 
});

コントローラ

class ResourceController extends Controller 
 
{ 
 
    ... 
 

 
    public function create() 
 
    { 
 
     return view('pages.create'); 
 
    } 
 

 
    public function store(Requests\CreateNewContactRequest $request) 
 
    { 
 
     ContactPerson::create($request->all()); 
 

 
     return redirect('resource'); 
 
    } 
 

 
    public function edit($id) 
 
    { 
 
     $user = ContactPerson::findOrFail($id); 
 

 
     return view('pages.edit')->with(compact('user')); 
 
    } 
 

 
    public function update($id, Request $request) 
 
    { 
 
     $user = ContactPerson::findOrFail($id); 
 

 
     $user->update($request->all()); 
 

 
     return redirect('pages.resource'); 
 
    } 
 
}

編集ビュー

@extends('app') 
 

 
@section('content') 
 

 
    {!! Form::model($user, ['method' => 'PATCH', 'action' => ['[email protected]', $user->id]]) !!} 
 

 
     <div class="form"> 
 
      {!! Form::label('first', 'First Name: ') !!} 
 
      {!! Form::text('First_Name', null, ['class' => 'form']) !!} 
 
     </div> 
 

 
     <div class="form"> 
 
      {!! Form::label('last', 'Last Name: ') !!} 
 
      {!! Form::text('Last_Name', null, ['class' => 'form']) !!} 
 
     </div> 
 
    
 
     ... 
 
    
 
    {!! Form::close() !!}

ソースの表示

それはlaravelがPATCHとしてそれを偽装してPOSTメソッドだということを示しています。 view page source

エラー error

+0

私は情報を編集できる場所に持ってきて、エラーなく提出してください。 '{!! Form :: model($ user、['route' => ['pages.update'、$ user-> id]])!!} '既存の情報を含む新しいレコードをデータベースに作成します。 PATCHの代わりにPUTをやっているように思えるかもしれません。また、更新するのに気をつけていなくても、ちょうどその代わりに作成しているような感じです。 – ph0bolus

答えて

1

それは<form>タグで間違った行動を生成します。使用してみてください:

'route' => ['pages.update', $user->id] 

の代わり:

'action' => ['[email protected]', $user->id] 

は、それが動作します?。

+0

または試してみてください {!! – Chavalit

+0

いいえ、どちらのソリューションも ' MethodNotAllowed'エラーです。私はチュートリアルに続き、彼が入力したすべてをタイプしたので、これは非常に奇妙です。 – ph0bolus

+0

'php artisan route:list'を実行するとすべてのルートが表示されます。 – Chavalit

関連する問題