リクエスト中に時々存在する入力を検証する際に問題が発生しました。Laravel 5.4時には "null"入力時に妥当性検査が必要ない
// Controller
public function update(Request $request, User $user)
{
$updateResult = $user->updateUser($request);
return dd($updateResult);
}
// User Model
protected $validation = [
'rules' => [
'email' => [
'sometimes',
'email',
'required',
],
'password' => [
'sometimes',
'min:6',
'required',
],
'first_name' => [
'sometimes',
'required',
],
'last_name' => [
'sometimes',
'required',
],
],
'messages' => [
'email.required' => 'An email is required.',
'email.email' => 'The email must be valid.',
'password.required' => 'A password is required.',
'password.min' => 'Your password must be at least six (6) characters long.',
'first_name.required' => 'Your first name is required.',
'last_name.required' => 'Your last name is required.',
],
];
public function updateUser(Request $request)
{
$validation = Validator::make($request->all(), [
$this->validation['rules'],
$this->validation['messages'],
]);
if ($validation->fails())
{
return $validation;
}
else
{
return "OK";
}
}
だから、いくつかの更新ページで$要求 - >すべての()のみ、これらのフィールドのサブセットを持っているとしています。ただし、フィールドが存在しても、値がnullの場合、必要なトリガーは発生しません。
[
'first_name' => null,
'last_name' => 'Davidson',
'job_title' => 'Tech Support',
]
上記要求配列は、「OK」を返します...私はフィールドから時々削除した場合、一部の入力要求が送信されるときに、それはフィールドが必要とされていると言って失敗しました。
私はここで何かが欠けてクリアしていますが、私は、私はこれを正しく構成されたと思ったドキュメント読んでから:いくつかの状況で
を、あなただけのそのフィールド場合 フィールドに対して検証チェックを実行することを望むかもしれません入力配列に存在します。すぐに を実行するには、ルールリストに時々のルールを追加します。
$ v = Validator :: make($ data、['email' => '時には必須| email']]); Laravel 5.4で
これは私がstackoverflowを愛しているものです...追加目のセット。これは真剣に私を精神的に運転していた。私はその配列がそこにいかにあるかを本当に知らない、規則を構築することからの筋肉の記憶であったに違いない。良いピックアップ!再度、感謝します。 – Trent