1

フォームがあり、フォームを更新しようとしています。フォームでは、「名前」は一意のフィールドです (リクエスト ページに一意の条件が追加され、テーブルでは名前が一意に設定されます)。フォームを更新しようとすると (値を指定しましたが、既にテーブルに存在しています)、「RouteCollection.php 行 219 の MethodNotAllowedHttpException」エラーが表示されます。

テーブルにない存在しない名前で「名前」を更新すると、問題なく動作します。

エラー

ルーター

Route::group(['middleware' => ['superadmin']], function () {
    Route::post('/sadmin/update_club',array('uses' => 'SAdmin\ClubController@updateClub', 'as' => 'updateClub'));
}

リクエスト

class UpdateClubRequest extends Request
{    
   public function authorize()
   {
      return true;
   }
   public function rules()
   {
     return [
        'name' => 'required|max:150|unique:clubs,name,'.Request::input('id'),
        'logo' => 'image|mimes:jpeg,png,bmp,gif,svg|max:10000',
      ];
   }
 }

レイアウトページ

{{ Form::open(array('route' => 'updateClub', 'method' => 'POST', 'class' => 'form-horizontal', 'files'=>true)) }}

  {{ Form::hidden('id', $club[0]['id']) }}
  {{ Form::text('name', $club[0]['name'], array('class' => 'form-control', 'maxlength' => 50)) }}

{{ Form::close() }}   
4

1 に答える 1

2

ここではエラーが表示されないため、別の場所でエラーが発生している可能性があります。たとえば、superadminこのルートに使用していることがわかります。コンソールで実行する必要があります。

php artisan route:list

ルート名にどのミドルウェアが適用されているかupdateClubを確認し、このミドルウェアのコードを確認します。これは、一部のミドルウェアが誤ったリダイレクトを行っている可能性があるためです (たとえばGET、ルーティングする方法のみ)。POST

2番目のこと(ここでは問題は発生していませんが、いくつかの標準に従う必要があります)-何かを更新するアクションを作成する場合は、PUTメソッド(POSTは新しいオブジェクトを作成するためのものです)を使用する必要があるため、このルートのルートとフォームの両方で変更する必要がありますPOST から PUT

編集

問題も少し異なる可能性があります。マルチステップ フォームがあると仮定しましょう (おそらくこれは、POST のみを使用しているためです。したがって、次のメソッド GET (ステップ 1) -> POST (ステップ 2) -> POST (ステップ 3) を使用しています)。ステップ2でエラーが発生します。リクエストクラスはステップ2に再度リダイレクトしようとしますが、GETメソッドを使用するため、routes.phpでもGETメソッドを許可する必要があるため、おそらく変更する必要があります

Route::post('someroute' ...

の中へ:

Route::match(['get','post'], 'someroute' ...

このフォームを表示しているページに対して行う必要があります

于 2016-04-09T16:42:46.640 に答える