2016-07-22 3 views
0

おかしい話をすれば、私のLaravelルートがメソッドスプーフィングで作業していない...私は、次のしている:方法スプーフィングはLaravel POSTで働いていない - >

<form action="http://ULTRA_HIDDEN_DOMAIN.dev/admin/page/9" method="POST" accept-charset="UTF-8"> 
    <input type="hidden" name="_method" value="PUT"> 
    <input type="hidden" name="_token" value="ULTRA_HIDDEN_KEY"> 
    <input type="text" name="page[name]"> 
    <input type="submit" value="submit"> 
</form> 

<form action="{{route('admin.page.update', $page->id)}}" method="POST" accept-charset="UTF-8"> 
    {{ method_field('PUT') }} 
    <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
    <input type="text" name="page[name]"> 
    <input type="submit" value="submit"> 
</form> 

これは次のようにレンダリングされます

しかし、私はクロームネットワーク上で、次の答えを得る、送信ボタンをクリックしたとき:

Request URL:http://ULTRA_HIDDEN_DOMAIN.dev/admin/page/9 Request Method:POST Status Code:302 Found

私はphp artisan route:listを行うと、私はそれが記載されている取得:

+--------+-----------+------------------------------------+------------------------------------+-------------------------------------------------------------------+----------------+ 
| Domain | Method | URI        | Name        | Action               | Middleware  | 
+--------+-----------+------------------------------------+------------------------------------+-------------------------------------------------------------------+----------------+ 
|  | GET|HEAD | admin/page       | admin.page.index     | App\Http\Controllers\Admin\[email protected]     | web,auth.admin | 
|  | POST  | admin/page       | admin.page.store     | App\Http\Controllers\Admin\[email protected]     | web,auth.admin | 
|  | GET|HEAD | admin/page/create     | admin.page.create     | App\Http\Controllers\Admin\[email protected]     | web,auth.admin | 
|  | GET|HEAD | admin/page/{page}     | admin.page.show     | App\Http\Controllers\Admin\[email protected]     | web,auth.admin | 
|  | PUT|PATCH | admin/page/{page}     | admin.page.update     | App\Http\Controllers\Admin\[email protected]     | web,auth.admin | 
|  | DELETE | admin/page/{page}     | admin.page.destroy     | App\Http\Controllers\Admin\[email protected]     | web,auth.admin | 
|  | GET|HEAD | admin/page/{page}/edit    | admin.page.edit     | App\Http\Controllers\Admin\[email protected]     | web,auth.admin | 
+--------+-----------+------------------------------------+------------------------------------+-------------------------------------------------------------------+----------------+ 

ルートはRoute::resource('page', 'PageController');を使用して作成されます。

なぜ方法のなりすましが機能していないかについての考えはありますか?

答えて

1

Httpのステータスコード302はリダイレクトのため、このリクエストは問題ありませんが、あなたが設定したミドルウェアを渡すことができないため、別の場所にリダイレクトする必要があります。

たとえば、あなたのPUTルートにログインしてそのレコードを更新する必要があり、ミドルウェアが302コードのログインページにリダイレクトするようにログインしていないとします。

+0

残念ながら私はミドルウェアをチェックして正しく動作していますが、xdebugの問題が発生している可能性があります:)感謝 – JohnnyAce

+2

ドキュメントのバグのために、コントローラに別のリクエストオブジェクトがありました。例えば ​​'public function update(Request $ request、$ id)'は 'public function update(MyOwnRequest $ request、$ id)'を持っていました。この新しいリクエストは、リダイレクトの問題でした。 – JohnnyAce

関連する問題