2017-06-01 6 views
2

ルーメンに$this->validateヘルパーを使用しようとしています。しかし、私が後者を使用するとき、私は正確なパラメータとその値を得ることができないので(フィールドが値を持っていても、それはまだ失敗とマークするでしょう)ため、要求では$request->all()の代わりに$request->json()->all()を実行する必要があります。laravelエラーを確認してください

$要求 - > JSON() - >すべての()出力:

array:6 [ 
    "username" => "" 
    "first_name" => "asaas" 
    "last_name" => "" 
    "email_address" => "" 
    "password" => "" 
    "password_confirmation" => "" 
] 

$要求 - >すべての()出力:

array:1 [ 
    "{"username":"","first_name":"asaas","last_name":"","email_address":"","password":"","password_confirmation":""}" => "" 
] 

さて、私が行うときヘルパーに$request->json()->all()を渡します。

$this->validate($request->json()->all(), [ 
    'username' => 'required|min:2|max:20', 
    'first_name' => 'required|max:50', 
    'last_name' => 'required|max:50', 
    'email_address' => 'required|email', 
    'password' => 'required', 
]); 

これは、エラーがスローされます。

Type error: Argument 1 passed to Laravel\Lumen\Routing\Controller::validate() must be an instance of Illuminate\Http\Request, array given, called in

私は予想通り、$requestjson()->all()でないものを渡す必要がありますので。エラーに対処するにはどうすればよいですか?

+0

を扱いますか?バリデーションに配列を渡すことはできません。それは、Requestオブジェクトである必要があります。 –

答えて

2

このようなバリデーターを使用してください。 >すべての() ` -

use Illuminate\Support\Facades\Validator; 

$validator = Validator::make($request->json()->all(), [ 
    'username' => 'required|min:2|max:20', 
    'first_name' => 'required|max:50', 
    'last_name' => 'required|max:50', 
    'email_address' => 'required|email', 
    'password' => 'required', 
]); 

は、その後なぜあなたは` $要求 - > JSON()を使用しなければならないの妥当性チェック

if ($validator->fails()) { 
    return response()->json($validator->errors(), 422); 
} 

それとも

$this->validateWith($validator); 
関連する問題