2016-09-11 12 views
0

で要求の検証を使用します。Laravelが、私はこのように私のAPIの検証を実装しようとしているAPI

public function store(RideUpdateRequest $request) 
    { 
     $user = JWTAuth::parseToken()->authenticate(); 

     $ride = Ride::create([ 
      'user_id'  => $user->id, 
      'time'   => $request->time, 
      'date'   => $request->date, 
      'type_id'  => $request->type_id, 
      'location_id' => $request->location_id, 
      'billabletime' => $request->billabletime 
     ]); 

     $ride->save(); 

     return response()->json(['success' => 'Rit succesvol aangemaakt.'], 200); 
    } 

RideUpdateRequest:

public function rules() 
    { 
     return [ 
      'time'    => 'required|integer', 
      'date'    => 'required|date', 
      'type_id'   => 'required|integer', 
      'location_id'  => 'required|integer', 
      'billabletime'  => 'required|integer' 
     ]; 
    } 

だから私はバックでエラーメッセージを与えることができますかjson(リクエストの検証に失敗した場合)?今は郵便配達員には何も返されません。

--EDIT--

応答:

{ 
    "billabletime": [ 
    "The billabletime field is required." 
    ] 
} 

は、私はあなたが、あなたがFormRequestクラスを見てみると、このような何かが

{ 
     "error": { 
     "The billabletime field is required." 
     } 
    } 

答えて

1

を?:もらえますresponse()メソッドは次のように定義されています:

public function response(array $errors) 
{ 
    if ($this->expectsJson()) { 
     return new JsonResponse($errors, 422); 
    } 
    ... 
} 

ですから、expectsJson条件を遵守するAccept: aplication/jsonリクエストヘッダを設定したり、あなた自身のRideUpdateRequestクラスでresponse()方法をsepcifyingして、デフォルトの応答挙動を強制することができ、次のいずれか

public function response(array $errors) 
{ 
    // Always return JSON. 
    return response()->json($errors, 422); 
} 
+0

ありがとうございます!もう1つ質問がありますが、私はそれをオブジェクトのように受け取っていません。それは可能ですか?私の意味は私の編集を参照してください。 Thankyou – Jamie

+1

これを試すことができます: 'return response() - > json(['error' => $ errors]、400); ' –

1

応答:

{ 
    "billabletime": [ 
    "The billabletime field is required." 
    ] 
} 

私はこれを得ることができますか?:

{ 
    "error": { 
    "The billabletime field is required." 
    } 
} 

a)の検証に失敗し、複数のフィールドがあるかもしれないとb)の特定のフィールドのために複数の障害があってもよいので、Laravelは、このフォーマットを使用します。例えば

:Laravelの検証システムが応答して422 Unprocessable Entityステータスコードを送信するため

{ 
    "email": [ 
    "The email field is invalid." 
    ], 
    "password": [ 
    "The password field must contain a number.", 
    "The password field must contain a special character." 
    ] 
} 

あなた"error": { ... }も不要です。

+0

私はそれを理解しています。しかし、私の角張ったアプリでは、そのフォーマットを使用するのは非常に難しいです。 – Jamie

+0

@Jamie次に、複数のエラーのどれを返信するかを決定する必要があります。 – ceejayoz

関連する問題