Sto provando a convalidare un campo password solo se è presente. Voglio consentire a qualcuno di modificare un utente e potrebbero o meno voler cambiare la password dell'utente. Quindi ho pensato che avrei potuto usare le regole di convalida di Laravels, in particolare la regola "a volte". Ho questo insieme di regole:Regola di validazione laravel a volte
$this->validate($request, [
'password' => 'sometimes|required|min:8',
]);
Questo è semplificata per l'esempio, ci sarà solitamente altre regole per gli altri campi e regole più severe per la password. Mi aspetto che applichi la regola min: 8 solo se il campo password è presente nei dati passati, ma se lascio il campo password vuoto ricevo un errore di convalida che dice che è richiesto il campo password.
Non sono sicuro di ciò che non sto capendo nei documenti. Devo rimuovere manualmente il campo della password prima della convalida se l'input del modulo è stato inviato vuoto come questo?
$data = $request->all();
if ('' === $data['password']) {
unset($data['password'])
}
... e quindi passare la matrice nel validatore. Penso che questo abbia senso, ma potrei fare con alcune conferme che lo sto capendo correttamente. Grazie in anticipo.
Dalla documenti, questo è quello che capisco. Quindi, fondamentalmente sei a posto, a meno che qualcuno non dica altrimenti. –
Sembra anche che se si rimuove la regola richiesta, funziona bene così: 'a volte | min: 8 .....', ma i documenti non lo rendono chiaro. – Steven1978
Sì. è quello che ho pensato prima, poi ho controllato di nuovo i documenti. : D –