web-dev-qa-db-ja.com

422エラーコードが表示されるのはなぜですか?

POSTリクエストを行っていますが、422レスポンス以外のものを取得できません。

Vue.jsクライアントコード:

new Vue({
  el: '#app',

  data: {
    form: {
      companyName: '',
      street: '',
      city: '',
      state: '',
      Zip: '',
      contactName: '',
      phone: '',
      email: '',
      numberOfOffices: 0,
      numberOfEmployees: 0,
    }
  },

  methods: {
    register: function() {
      this.$http.post('/office-depot-register', this.form).then(function (response) {

        // success callback
        console.log(response);

      }, function (response) {

        // error callback
        console.log(response);

      });
    }
  }
});

Laravelルート:

Route::post('/office-depot-register', ['uses' => 'OfficeDepotController@register', 'as' => 'office-depot-register']);

Laravelコントローラー:

public function register(Request $request)
{
    $this->validate($request, [
        'companyName' => 'required',
        // ...
    ]);

    // ...
}
7
Donnie

Laravelを使用すると、受け入れるフィールドに特定の検証を定義できます。これらの検証に失敗すると、HTTP 422 - Unprocessable Entityが返されます。特定のケースでは、companyNameが必要であり、空の文字列が必要な検証に合格しないため、空のスケルトンオブジェクトで独自の検証テストに失敗しているようです。

他のフィールドも同様に検証されていると仮定すると、データが入力されたオブジェクトで問題が解決するはずです。

data: {
  form: {
    companyName: 'Dummy Company',
    street: '123 Example Street',
    city: 'Example',
    state: 'CA',
    Zip: '90210',
    contactName: 'John Smith',
    phone: '310-555-0149',
    email: '[email protected]',
    numberOfOffices: 1,
    numberOfEmployees: 2,
  }
}
5
Brandon Anzaldi