laravel 5.4でユーザーを作成および更新しようとしています
これは、ユーザーの作成用に追加された検証です。できます。
$this->validate($request, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
更新時には、パスワードフィールドは不要です。ただし、パスワードフィールドがnullでない場合は、min:6および確認済みのルールを検証します。 sometimes
..で試してみましたが、動作していません。
$this->validate($request, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users,email,'.$id,
'password' => 'sometimes|min:6|confirmed',
]);
ルールとしてヌル可能を使用してみてください
'password' => 'nullable|min:6|confirmed',
https://laravel.com/docs/5.8/validation#a-note-on-optional-fields を参照してください
'password' => 'nullable|min:6|confirmed',
@Rejinderiの答えは正しいです!
'password' => 'sometimes|required|min:6|confirmed',
username = 'admin',
password = null // fail- required
username = 'admin',
password = 123 // fail- min:6
username = 'admin' // pass- validate only exist
パスワードフィールドに基づいてルールを作成します。パスワードフィールドが存在する場合のみ検証します。
if ($request->input('password')) {
$rules = [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users,email,'.$id,
'password' => 'required|min:6|confirmed',
];
} else {
$rules = [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users,email,'.$id
];
}
$this->validate($request, $rules);
これは私がそれをする方法です:
//For new or create :
$this->validate($request, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
//For edit or update:
$this->validate($request, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'min:6|confirmed',//just remove required from password rule
]);
説明:
この方法では、リクエストで定義(存在)される場合にのみ値が検証されます
nullableを使用すると、バリデーターはnullを値(私は受け入れられないと思います)
更新からpassword検証を削除すると、この入力は検証されなくなり、任意の値が受け入れられます(これも受け入れられません)。